Refactoring Acceptor to abstract class