- a bit of refactoring as I take a different approach