support deep keys and values