improve checksum