trigger observers, wow this is all very complicated and full of duct tape