first commit on refactor