refarct golang project