remove silly onState and do it by hand for moar code cleanz + followability. remove all evil self = this