closes #15, closes #18, closes #19, closes #20, closes #21, updated app demo