#3 completed
#4 and #5 completed