     }
     
     static func loadError<T>(type: T.Type) -> MSError {
-        // MSTODO: add new document errors
         switch T.self {
         case let t where t == MSCustomerOrderType.self:
             return MSError.genericError(errorText: LocalizedStrings.incorrectCustomerOrdersResponse.value)

    }
    
    static func loadUrlTemplate<T: MSBaseDocumentType>(type: T.Type) -> MSApiRequest {
        // MSTODO: add new document templates
        switch type {
        case let t where t == MSCustomerOrderType.self:
            return .customerordermetadata

    
    /**
     Load document by Id
     - parameter request: Type of document request
     - parameter auth: Authentication information
     - parameter documentId: Document Id
     - parameter expanders: Additional objects to include into request
     */
    public static func loadById(forRequest request: MSDocumentLoadRequest,
                                auth: Auth,
                                documentId: UUID,
                                expanders: [Expander] = []) -> Observable<MSDocument>  {
        return HttpClient.get(request.apiRequest, auth: auth, urlPathComponents: [documentId.uuidString], urlParameters: [CompositeExpander(expanders)])
            .flatMapLatest { result -> Observable<MSDocument> in
                guard let result = result else { return Observable.error(request.requestError) }
                
                guard let deserialized = MSDocument.from(dict: result)?.value() else {
                    return Observable.error(request.requestError)
                }
                
                return Observable.just(deserialized)
