first commit
finished refactor
refactored more