refactor out Immutable X Traits