add nullable types support add type monads