add sweep
improve sweep