mapper abstract class