Fully implemented all except the graph