Solves: #7 (closed), #14 (closed), #21 (closed), #23 (closed)
+ refactoring: split functionalities to dedicated modules