better encapsulate on/off behavior