initial compilation stuffs