this works, but it sucks