started refactoring shainable maybe monad