(1) More error checking
(2) Error checking relaxed to account for subclassing
(3) Made assertion Boolean method, and report as error
(4) Use CRC32 for hashing