use new controller pattern