implement pipeline (#60)