# Ownable Controller Factory

The `OwnableControllerFactory` deploys controllers that can be used to trigger the safety module.

### Determine Controller Parameters

<pre class="language-solidity"><code class="lang-solidity">struct ControllerMetadata {
  // The name that should be used for SafetyModules that use the controller
  string name;
  // A human-readable description of the controller.
  string description;
  // The URI of a logo image to represent the controller.
  string logoURI;
  // Any extra data that should be included in the controller's metadata.
  string extraData;
}
<strong>
</strong><strong>/// @notice Deploys a new OwnableController contract with the supplied owner and deploy salt.
</strong>/// @param _owner The owner of the controller.
/// @param _metadata The metadata of the controller.
/// @param _salt Used during deployment to compute the address of the new OwnableController.
  function deployController(address _owner, ControllerMetadata memory _metadata, bytes32 _salt)
    external
    returns (ISafetyModuleController _controller);
</code></pre>
