first and final commit
refactored