Closes #98 and provides beginnings of #13