closes #25,#24,#21,#14,#17