closes #6 #8 #9