fifth refactor