A simple class implementation. Needs a real checksum. Needs caching, but I think that gets implemented in a different class and I think Conal has some results here already.