base controllers and types