add Go implementation