       defmodule MyApp.PluginDemo do
         use Mix.Releases.Plugin
 
-        def before_assembly(%Release{} = release, _opts) do
+        def before_assembly(%Release{} = release) do
           info "This is executed just prior to assembling the release"
           release # or nil
         end
 
-        def after_assembly(%Release{} = release, _opts) do
+        def after_assembly(%Release{} = release) do
           info "This is executed just after assembling, and just prior to packaging the release"
           release # or nil
         end
 
-        def before_package(%Release{} = release, _opts) do
+        def before_package(%Release{} = release) do
           info "This is executed just before packaging the release"
           release # or nil
         end
 
-        def after_package(%Release{} = release, _opts) do
+        def after_package(%Release{} = release) do
           info "This is executed just after packaging the release"
           release # or nil
         end
 
-        def after_cleanup(_args, _opts) do
+        def after_cleanup(%Release{} = release, _args) do
           info "This is executed just after running cleanup"
           :ok # It doesn't matter what we return here
         end


  Should return a modified `%Release{}` or `nil`.
  """
  @callback before_assembly(Release.t, Keyword.t) :: Release.t | nil

  @doc """
  Called after assembling the release.

  Should return a modified `%Release{}` or `nil`.
  """
  @callback after_assembly(Release.t, Keyword.t)  :: Release.t | nil

  @doc """
  Called before packaging the release.

  `use Mix.Releases.Plugin`. Then write implentations for the following
  callbacks:

    - `c:before_assembly/1`
    - `c:after_assembly/1`
    - `c:before_package/1`
    - `c:after_package/1`
    - `c:after_cleanup/2`

  Currently, there are no default implementations. You are required to
