Attempting to setup abstract model and rule classes so that future
models can be more modular...the only thing I can't figure out just yet
is how these things will all interact.