closes #53, #55, #56