These started out being a little different... they are not any more.  I'll deal with the repeated code by making use of `setattr`...