this is slightly less horrible