refactor compiler, no more warns