closes #1 #2 #3 #7 #11