 
 extension EndpointProcedure {
 
+    /// Creates `EndpointProcedure` connecting with HTTP endpoint.
+    ///
+    /// - Parameters:
+    ///   - requestData: specifies attributes of HTTP request.
+    ///   - validationProcedure: receives `HTTPResponseData` as an input.
+    /// Stops `EndpointProcedure`, if finishes with errors.
+    ///   - configuration: determines what `dataLoadingProcedureFactory`, `dataDeserializationProcedureFactory`
+    /// and `responseMappingProcedureFactory` should be used for coresponding procedures creation.
+    /// `Configuration.default` used if no value passed.
+    /// If no value passed and `Configuration.default` is not initialize,
+    /// `EndpointProcedure` will finish with `EndpointProcedureError.missingConfiguration
+    ///
     public convenience init<V: Procedure>(requestData: HTTPRequestData, validationProcedure: V, configuration: ConfigurationProtocol! = nil)
         where V: InputProcedure, V.Input == HTTPResponseData {
             let interceptionProcedure = HTTPDataFlowProcedure<Result>.createEmptyInterceptionProcedure()


extension EndpointProcedure {

    public convenience init<L: Procedure>(dataLoadingProcedure: L, configuration: ConfigurationProtocol! = nil)
                    where L: OutputProcedure, L.Output == Data {
        let interceptionProcedure = DataFlowProcedure<Result>.createEmptyInterceptionProcedure()


    private let initialization: EndpointProcedureInitialization<Result>

    /// Creates `EndpointProcedure` with `DataFlowProcedure` inside regardless any `Configuration` value.
    ///
    /// - Parameter dataFlowProcedure: procedure that should be run inside `EnpointProcedure`
    public init(dataFlowProcedure: DataFlowProcedure<Result>) {
        self.initialization = .dataFlowProcedure(dataFlowProcedure)
        super.init(operations: [dataFlowProcedure])
    }

    /// Creates `EndpointProcedure` connecting with HTTP endpoint.
    /// 
    /// - Parameters:
    ///   - requestData: specifies attributes of HTTP request.
    ///   - validationProcedure: receives `HTTPResponseData` as an input.
    /// Stops `EndpointProcedure`, if finishes with errors.
    ///   - interceptionProcedure: receives deserialized response data as an input.
    /// Should transform input to a format expected by `mappingProcedure`.
    /// Stops `EndpointProcedure`, if finishes with errors.
    ///   - configuration: determines what `dataLoadingProcedureFactory`, `dataDeserializationProcedureFactory`
    /// and `responseMappingProcedureFactory` should be used for coresponding procedures creation.
    /// `Configuration.default` used if no value passed.
    /// If no value passed and `Configuration.default` is not initialize, 
    /// `EndpointProcedure` will finish with `EndpointProcedureError.missingConfiguration
    ///
    public init<V: Procedure, I: Procedure>(requestData: HTTPRequestData,
         validationProcedure: V, interceptionProcedure: I, configuration: ConfigurationProtocol! = nil)
        where V: InputProcedure, V.Input == HTTPResponseData,
