added decreasing epsilon option