closes #20 #21