seems like it should be faster than it is