refactored internals - eventListenerCollection, added suspend/resume; allow show/hide infoText
design rectangle by area, perimeter, ratio of sides