Cleaned up, add commentaries