Extract logic to controllers and add validation service