break compiler.py into smaller pieces