starting refactor, hm, might be kinda broken