Initial check-in

Initial checking after large scale refactoring