add checksum function