Big reorganization

Separate functionality to separate files
use ruby-graphviz lib for graph drawing