Shor has showed how to perform fault tolerant quantum computation when the probability for an error in a qubit or a gate, η, decays with the size of the computation polylogarithmically, an assumption which is physically unreasonable. This paper improves this result and shows that quantum computation can be made robust against errors and inaccuracies, when the error rate, η, is smaller than a constant threshold, ηc. The cost is polylogarithmic in space and time. The result holds for a very general noise model, which includes probabilistic errors, decoherence, amplitude damping, depolarization, and systematic inaccuracies in the gates. Moreover, we allow exponentially decaying correlations between the errors both in space and in time. Fault tolerant computation can be performed with any universal set of gates. The result also holds for quantum particles with p > 2 states, namely qupits, and is also generalized to one dimensional quantum computers with only nearest neighbor interact...