The main entry function