extract functions up to the abstract class