Go rewrite

Closes #38
Closes #36
Closes #35
Closes #34
Closes #32