use JSON::XS and Memoize