starting to modularize the compiler more