Control software in routers have gotten increasingly complex today. Further, since the control software runs in every router, managing a large network of routers is complex and expensive. In this paper, we propose that the control software be hosted in a few control element servers remotely from the forwarding elements (routers). This reduces the software complexity in numerous forwarding elements, thus increasing the overall reliability of the network. In order to achieve this, we describe the design and implementation of two protocols: 1) Dyna-BIND that allows the forwarding elements to dynamically bind to control elements and 2) ForCES that allows the control elements to control the forwarding elements. Furthermore, we argue through several examples that the separation and logical centralization of control plane software in this architecture enables easier deployment of new services.