implement pipeline