closes #27, #31, 35