can we have a return type on all public methods? (`Either[E, O]`)