May be standard  ```throw new OpperationNotSupportedException()``` could enforce the contract here?