observer, needs fixing :(