Refactor compile to its own first class package