refactoring for skinny controller fat model