Cleaned up, commentaries added