First commit of the tool. Tool is fragile right now. A few features still not fully implemented.