user can specify their own mapping