committing new, refactored version