restructure code, change class name
new major code re-organisation