this is just slightly faster in the default case, but it may not be faster in all cases