clean up
refactoring into separate class files