closes #19 and closes #20