We discuss energy barriers and their relationship to self-correcting quantum memories. We introduce the solid code, a 3-d version of Kitaev's surface code, and then combine several solid codes using a technique called welding. The resulting code is a \([[O(L^3),1,O(L^{\frac{4}{3}})]]\) stabilizer code with an energy barrier of \(O(L^{\frac{2}{3}})\), which is an exponential improvement over the previous highest energy barrier in 3-d. No-go results are avoided by breaking microscopic translation invariance.