this shouldn't be this hard