add Maybe contract + functype method + update specs and readme