add tolerence parameter