fixes #39 fixes #45 fixes #21