add immutable model trait