The small object argument is a transfinite construction which, starting from a set of maps in a category, generates a weak factorisation system on that category. As useful as it is, the small object argument has some problematic aspects: it possesses no universal property; it does not converge; and it does not seem to be related to other transfinite constructions occurring in categorical algebra. In this paper, we give an "algebraic" refinement of the small object argument, cast in terms of Grandis and Tholen's natural weak factorisation systems, which rectifies each of these three deficiencies.