controller encapsulation