sorry, final refactor