controller and directive