After many hours of banging my head, I finally realized that the interface should of belonged to the class Entry point. Once I did this, I was able to do what I wanted. Here is a tidbit of the code I used. using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Tcp; using RemoteInterfacecls; //Code not proviced at this time using System.Runtime.Serialization; namespace RemotingInterfaceServer { public class dataStuff { public byte [] mystuff; } public class EntryPoint { dataStuff dS = new dataStuff(); public static void Main(string[] args) { //Here is the initializaton ds.mystuff = System.Text.Encoding.ASCII.GetBytes("This is a test"); TcpServerChannel channel = new TcpServerChannel(2566); ChannelServices.RegisterChannel(channel); RemotingConfiguration.RegisterWellKnownServiceType( typeof(RemoteExample), "RemoteExample", WellKnownObjectMode.SingleCall); System.Console.WriteLine("Hit Key to Exit"); System.Console.ReadLine(); } public class RemoteExample : MarshalByRefObject, IRemoteExample { public RemotingExample() { Console.WriteLine("Constructor Called "); } public IByteArray GetByteArray() { ByteArray byteArray; byteArray.bytesRead = dS.mystuff; return (IByteArray)byteArray; } } [Serializable] public class ByteArray : MarshalByRefObject, IByteArray { public byte [] bytesRead; } } } Tom McDaniel