Upstream Merge

resolves #135 
resolves #134 
resolves #90
resolves #131