move implementation to plugin/
remove generated files
refactor