#3 refactor common code into objective helper