review points 1 and 12
review point 2
review point 6
fix review point 7