add go implementation