pub trait Node<BASE> {
// Required methods
fn cycle(&mut self, channels: &Vec<FrontEnd<BASE>>) -> Result<(), BASE>;
fn handle(&mut self, incoming: Query<BASE>) -> Result<Response<BASE>, BASE>;
// Provided methods
fn metadata(&self) -> Metadata { ... }
fn boot(&mut self, channels: &Vec<FrontEnd<BASE>>) -> Result<(), BASE> { ... }
fn halt(&mut self, channels: &Vec<FrontEnd<BASE>>) -> Result<(), BASE> { ... }
}