Stage 4, need to add comments and minor editings