add a mapping-based approach