special cases annoying, not fully working