Ismail

Fix #7, #8, some #10, #12 and many small bugs
Please annotate return type in docstring
```python
:returns: foo
:rtype: bar
```