BackEnd: DRYing controller methods with proper metaprogramming