merge develop branch

* #1
* #2 
* other refactoring