refactor api a bit, improve tests, rakefile, gemspec, and add new api method for most listens