use the factory method to construct the mapping