Added cast
Generalized OrElse, closes #2
Overload tap, closes #1