reorganize go source code