Instead of ```rust pub trait Layer<B: IBackend>: Debug { fn compute_output(&self, backend: &B, context: &mut Context); fn compute_gradients(&self, backend: &B, context: &mut Context); } ``` we would have ```rust pub trait Layer<B: IBackend>: Debug { fn compute_output(&self, backend: &B, context: &mut Context) -> Result<(), LayerError>; fn compute_gradients(&self, backend: &B, context: &mut Context) -> Result<(), LayerError>; } ```