Locks down visibility of methods not intended to be used elsewhere
Changes object name slightly per code review suggestion
Refactors logic a bit by introducing a `when_not_implemented` method