namespace fbp {
    
    struct output: public portal {
        
        output(std::string name): portal(name) {}
        
        void connect(connectable* link) override {
            link->sender(this);
            portal::connect(link);
        }
        
        template<typename T>
        void send(std::unique_ptr<T> ip, std::string port) {
            static_cast<connection<T>*>(this->operator[](port))->send(std::move(ip));
        }
        
    };
    
}