   * Responds with incremental message ids to all incoming `submit_sm` packets (regardless of the bind state).
 
 
-  ```
+  ```elixir
+  
   defmodule MC do
 
-    use SMPPEX.MC
+    use SMPPEX.Session
+
+    alias SMPPEX.Pdu
+    alias SMPPEX.Pdu.Factory, as: PduFactory
 
     def start(port) do
       SMPPEX.MC.start({__MODULE__, []}, [transport_opts: [port: port]])

    end

    def handle_pdu(pdu, last_id) do
      case pdu |> SMPPEX.Pdu.command_id |> SMPPEX.Protocol.CommandNames.name_by_id do
        {:ok, :submit_sm} ->
          SMPPEX.MC.reply(self(), pdu, SMPPEX.Pdu.Factory.submit_sm_resp(0, to_string(last_id)))
          last_id + 1
        {:ok, :bind_transmitter} ->
          SMPPEX.MC.reply(self(), pdu, SMPPEX.Pdu.Factory.bind_transmitter_resp(0))
          last_id
        {:ok, :enquire_link} ->
          SMPPEX.MC.reply(self(), pdu, SMPPEX.Pdu.Factory.enquire_link_resp)
          last_id
        _ -> last_id
      end
    end
  end
  ```


    * Starts to send predefined PDUs after bind at maximum possible rate but regarding window size.
    * Stops after all PDUs are sent and notifies the waiting process.

  ```elixir
  defmodule SMPPBenchmarks.ESME do

    use SMPPEX.Session
    require Logger

    @from {"from", 1, 1}
