Major refact:
 - clean project structure
 - adding some tests
 - clean makefile
 - namespace separation
 - fix readline usage issue