Refactor, abstract class