diff --git a/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java b/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java
index 395d154..a206a7d 100644
--- a/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java
+++ b/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java
@@ -1089,7 +1089,7 @@
         InterfaceContract endpointReferenceContract = endpointReference.getReference().getInterfaceContract();
         InterfaceContract endpointContract = endpoint.getComponentServiceInterfaceContract();
         
-        if (endpointReferenceContract == null){
+        if (endpointReferenceContract == null || endpointContract == null){
             matchAudit.append("Match because there is no interface contract on the reference ");
             matchAudit.appendSeperator();
             return true;
diff --git a/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/configuration/xml/RemoteEndpointsProcessor.java b/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/configuration/xml/RemoteEndpointsProcessor.java
index 640b841..174bee4 100644
--- a/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/configuration/xml/RemoteEndpointsProcessor.java
+++ b/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/configuration/xml/RemoteEndpointsProcessor.java
@@ -41,6 +41,8 @@
 import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.core.FactoryExtensionPoint;
+import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceContract;
+import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory;
 import org.apache.tuscany.sca.policy.PolicySet;
 
 /**
@@ -96,8 +98,18 @@
                 for (ComponentService service : component.getServices()) {
                     for (Binding binding : service.getBindings()) {
                         Endpoint endpoint = assemblyFactory.createEndpoint();
+                        endpoint.setRemote(true);
                         endpoint.setComponent(component);
                         endpoint.setService(service);
+                        /*
+                        if (service.getInterfaceContract() == null) {
+                            JavaInterfaceFactory interfaceFactory =
+                                modelFactories(registry).getFactory(JavaInterfaceFactory.class);
+                            JavaInterfaceContract contract = interfaceFactory.createJavaInterfaceContract();
+                            contract.setInterface(interfaceFactory.createJavaInterface());
+                            service.setInterfaceContract(contract);
+                        }
+                        */
                         endpoint.setBinding(binding);
 
                         // retrieve the stash of intents and policy sets from the component
