Pipe prototype
first draft with base classes