speed much improved; still slow for epsilon > 0