Go Package Management 2.0 rewrite

squash merge