Added support for toggle and increment. Moved some controller code to
the abstract class.