I like the changes you've made in this PR; so I am going to merge this in as is. That said, expect the On class to look just like before on the next round of generation.