added new controllers and worked with generic programming