Moved from interface to abstract class to limit scope