implement checksum check (list still to complete)
refactoring