account for race conditions
This isn't the best solution for sure, but it works.
address null reference exceptions
define ToString for debugging convenience
added utility method to get a button by ID
added ability to register keypad button triggers