you could also make it immutable (at least the fields involved in the hash) by providing methods decorated with `@property`.