major changes, completely new method -- see README.md