1. Subclass BlElement
2. Consider what child elements are needed. Give descriptive names (instance variables).
3. Separate concerns.
initialize
super initialize.
self initializeElementsAndAppearance.
self initializeInteractivity.
We will separate the concerns of interactivity and appearance.
we need to initialize our instance variables somewhere. Sometimes
it is just easier to do that in appearance. could do it here.
4.
initializeElementsAndAppearance
create instance variables
handle layout, size, color concerns.
add them to parent.
5.
initializeInteractivity.
how the elements will interact with each other.