Added maybe monad and some initial tests