I would also like to mention the idea of [Command Query Separation](https://martinfowler.com/bliki/CommandQuerySeparation.html) Ideally, * Queries return a result (and don't have side-effects) * Commands change the state of a system. As it seems to me that your methods are essentially *commands*, I would have them have a void return signature and raise exceptions on errors. Than again, even if your *queries* encounter errors, they too should raise exceptions and not "return" something indicating an error. Programmers sometime use *null* to signify that a *query* failed, but I think that is ill advised.