more hacking.. really needs a cleanup