satisfy abstract class contract