Implemented some unit tests. Tweaked GUI and refactored code.

alternatively GUI is just an observer for the reminder event. then how you want to implement it is completely up to @evansb...