namespace boost {
  namespace dataflow {
    namespace blueprint {
      template<typename Operation> class binary_operation;
      template<typename Operation> 
        bool are_binary_operable(port & left, port & right);
      template<typename Operation> 
        shared_ptr< binary_operation< Operation > > 
        get_binary_operation(port & producer, port & consumer);
      void extract(port & producer, port & consumer);
    }
  }
}