breaking change for 2.0
re-implement code generation and templates
simple tested