this resolves #130, resolves #188, resolves #196, resolves #210