Ismail

Fix #7, #8, some #10, #12 and many small bugs
annotate return type