need help optimizing a function