Updated with my slight variations