This version:
1) Supports duplicates only
2) Is very fast (due to use of cython 0.12)
3) Does not have generators (due to use of cython 0.12)
4) felt hackish as I made the changes, but this code remains a good proof of concept