Split things out into separate parameterised classes.