minor nit, I'd move the final fields towards at the top of the class def, and the mutable fields below.