why throw an UnsupportedOperationException() ?