#1 - closed
#6 - implemented(closed)
#8 - implemented(closed)
#9 - implemented(closed)
#12 - implemented(closed)