Resolves #118, resolves #159, resolves #160
Resolve #74