We will discuss the basics of modeling neutron reflectometry data using a layer model (a solution to the 1-d Schrödinger equation), including the effects of magnetism and polarized beams. We will introduce the Refl1D software package; this program provides a stable implementation of the calculation kernel, a complete suite of fitting/minimization engines, as well as an advanced statistical sampling system for empirically determining relationships between fitting parameters and determining confidence bounds on extracted parameters. Some useful features such as simultaneous fitting (combine X-ray measurements with neutrons, or systematically vary only one parameter between runs, etc) and some guidelines on choosing a fitting engine will be discussed, time permitting.