Closes #56 (and then some)