fix #18
extract some modules to TightEngine