allow user-defined mapping