adding Controller interface to make things more tidy