first crack at a generic toggler object