Final

completed with comments