simple abstract mapper to prevent duplication