initial commit in major refactoring