This avoids redefinition errors because it makes the implementation local to whatever is including it.