Add Perhaps type
Add Functor and Bindable