closes #27, closes #88