closes #134, closes #107, closes #135, closes #54