more hacking, very incomplete