initial commit after refactor

initial commit after refactor