implemented the maybe type