Initial Go port
Merge branch 'go'