anchor.diff:  init(_Args) ->
       Port = application:get_env(erl_cowboy, port, 80),
       Listeners = application:get_env(erl_cowboy, listeners, 100),
  +    TLSEnabled = application:get_env(erl_cowboy, tls_enabled, false),
  +    TLSOpts = application:get_env(erl_cowboy, tls_opts, undefined),
       gen_server:cast(?MODULE, start),
  -    {ok, #{port => Port, listeners => Listeners, routes => #{}}}.
  +    {ok, #{port => Port, listeners => Listeners,
  +           routes => #{},
  +           tls_enabled => TLSEnabled,
  +           tls_opts => TLSOpts}}.
   
   handle_call({routing, Key, NewRoute}, _From, State = #{routes := Routes}) ->
       NewRoutes = maps:put(Key, NewRoute, Routes),
  
positive.code: handle_call(Request, _From, State) ->
      {stop, {notimplemented, Request}, State}.
  
  handle_cast(start, State = #{port := Port, listeners := Listeners}) ->
      {ok, Pid} = start_cowboy(Port, Listeners),
      {noreply, State#{pid => Pid}};
  handle_cast(Msg, State) ->
      {stop, {notimplemented, Msg}, State}.
  
negative.code:     ?INFO("~p listening on port ~p~n", [?MODULE, Port]),
      cowboy:start_http(?MODULE, Listeners, [{port, Port}], [{env, []}]).
  
  start_cowboy_with_tls(Port, Listeners, TLSOpts) ->
      TLSCert = proplists:get_value(certfile, TLSOpts, undefined),
      TLSKey = proplists:get_value(keyfile, TLSOpts, undefined),
      TLSKeyPass = proplists:get_value(password, TLSOpts, undefined),
      ?INFO("~p listening on port ~p with TLS enabled~n\tcert: ~s~n\tkey: ~s)",
            [?MODULE, Port, TLSCert, TLSKey]),
      TransportOpts = [{port, Port}, {certfile, TLSCert}, {keyfile, TLSKey},
                       {password, TLSKeyPass}],
      cowboy:start_https(?MODULE, Listeners, TransportOpts, [{env, []}]).
  
  update_cowboy(Routes) ->
      RouteList = lists:flatten(maps:fold(
          fun(_, Route, Acc) ->
  