Closes #105, #53, #94