new abstract mapper with key mapping method