Renamed interface and abstract class to better repressent their meaning