add more optimized versions