implemented checksum