Completed functionality (including hashing) except for serialization; included corresponding tests; made the example program functional