Add Buttons Programatically

Once this pull request is approved, I want to squash the commits.