runs much faster with smaller epsilon