immutable types are more of an inconvenience than a benefit at the moment
reinitialize! accounts for dx and exact_phi rewrite