small experiment with refactored siphons
halfway there
kinda compiles
updated tests