edited abstract controller