TODO: We may decide that we want some functions to query whether the object allows one or the other, or we may break this out into a separate interface. We'll wait to see when this actually becomes necessary to see the most convenient way to go at that point.