almost ready to compile