Cleaned and organised GenericController