add golang implementation