Final - completed with comments