Updated with comments