split handler.go into handler.go and compiler.go