adding reverse - should have massive speedups assuming the lower weight - the more frequent the item