Improved with some minor structures and descriptions changes