Add abstract controller && fixes