Should we rather throw an Exception? Or introduce a capabiltiies API.

````
public function __construct()
{
$this->addCapability(self::CAN_RENAME);
$this->addCapability(self::CAN_REMOVE);
$this->addCapability(self::CAN_WRITE);
// whatever
}
````

Then the UI can adjust its interface accordingly.