use type instead of immutable