Any implementation of a quantum computer will require the ability to reset qubits to a pure input state, both to start the computation and more importantly to implement fault-tolerant operations. Even if we cannot reset to a perfectly pure state, heat-bath algorithmic cooling provides a method of purifying mixed states. By combining the ability to pump entropy out of the system through a controllable interaction with a heat bath and coherent control of the qubits, we are able to cool a subset of the qubits far below the heat bath temperature. Here we show an implementation of this cooling in a solid state NMR quantum information processor which offers high fidelity control of the qubit system and controllable access to a heat bath. We demonstrate an implementation of multiple rounds of heat-bath algorithmic cooling on three qubits and discuss the improvements in control techniques which have allowed us to show the purification of a single qubit to one and a half times the heat bath polarization.