commented everything, completely re-worked the graph (hopefully for the last time) and split up the graph and actual icp parts up into their own respective methods.
updated the gitignore