refactor mappers to use data of arbitrary depth without eval(); e.g. data(foo.bar.baz)