Can you think of a better name for this? Could we get away with having these functions be `@access private`? I kinda feel the gatekeeper stuff belongs in a separate class but I want to get this in 1.9 and don't have time to tinker with it.

Thanks for the rebase.