Closes #77
Closes #78
Partial #59, #77 fix, #44 partial