added md5 memoization