closes #120
closes #127
closes #125
closes #121