adding wrapKey and wrapValue feature