even better factory usage (and more explicit tests)