many bugs and headaches later, an abstracted button is made.