#2 and #3 done