Extract core functionality to an abstract controller to simplify request mapping inheritance