anchor.diff:  generate_password() ->
   	generate_password(12).
   
  --spec start(Type :: auth | acct, Address :: inet:ip_address(),
  -		Port :: pos_integer()) ->
  -	{ok, Pid :: pid()} | {error, Reason :: term()}.
  +-spec start(Type, Address, Port) -> Result
  +	when
  +		Type :: auth | acct,
  +		Address :: inet:ip_address(),
  +		Port :: pos_integer(),
  +		Result :: {ok, Pid} | {error, Reason},
  +		Pid :: pid(),
  +		Reason :: term().
   %% @equiv start(Type, Address, Port, [])
   start(Type, Address, Port) when is_tuple(Address), is_integer(Port) ->
   	start(Type, Address, Port, []).
   
   -type eap_method() :: pwd | ttls.
  --spec start(Type :: auth | acct, Address :: inet:ip_address(),
  +-spec start(Type, Address, Port, Options) -> Result
  +	when
  +		Type :: auth | acct,
  +		Address :: inet:ip_address(),
   		Port :: pos_integer(),
  -		Options :: [{eap_method_prefer, EapType :: eap_method()} |
  -		{eap_method_order, EapTypes :: [eap_method()]}]) ->
  -	{ok, Pid :: pid()} | {error, Reason :: term()}.
  +		Options :: [{eap_method_prefer, EapType} | {eap_method_order, EapTypes}],
  +		EapType :: eap_method(),
  +		EapTypes :: [eap_method()],
  +		Result :: {ok, Pid} | {error, Reason},
  +		Pid :: pid(),
  +		Reason :: term().
   %% @doc Start a RADIUS request handler.
   start(Type, Address, Port, Options) when is_tuple(Address),
   		is_integer(Port), is_list(Options) ->
  -	gen_server:call(ocs, {start, Type, Address, Port, Options}).
  +		gen_server:call(ocs, {start, Type, Address, Port, Options}).
   
   %%----------------------------------------------------------------------
   %%  internal functions
   %%----------------------------------------------------------------------
   
  --spec generate_password(Length :: pos_integer()) -> password().
  +-spec generate_password(Length) -> password()
  +	when 
  +		Length :: pos_integer().
   %% @doc Generate a random uniform password.
   %% @private
   generate_password(Length) when Length > 0 ->
  
positive.code: 			exit(Reason)
  	end.
  
  -spec find_client(Address :: inet:ip_address()) ->
  	Result :: {ok, DisconnectPort :: inet:port_number(), Protocol :: atom(), Secret :: binary()} | {error, Reason :: not_found | term()}.
  %% @doc Look up the shared secret for a RADIUS client.
  %%
  find_client(Address) when is_list(Address) ->
  
negative.code: 			exit(Reason)
  	end.
  
  -spec update_password(Subscriber, Password)-> Result
  	when
  		Subscriber :: string() | binary(),
  		Password :: string() | binary(),
  		Result :: ok | {error, Reason},
  		Reason :: not_found | term().
  %% @doc Update a new subscriber password
  %% @see ocs:generate_password/0
  update_password(Subscriber, Password)
  