added a really bad event listener system, idk wtf onMutate() is doing, no good polymer examples