refactor controls properties/methods into a buildControls method.
all event listeners are added in the attach method. There is still no detach method yet.
Implemented issue #22.