added an abstract class for the pipe