Updated with comments. Main comment still to do