closes #34, closes #30