mutable and immutable data structures