Thanks for the feedback; I agree with you. Here's the reasoning behind these odds choice..
List is-a list, and Dict is-a dict.. and thus, I'd like to make it possible to safely pass these objects to already existing code. If I rename .rem to .remove, I'd break that.
The reason for the chaining saving() is because it's useful to be able to toggle it. For instance:
self.x = Moka.List(range(1,10)).mutable()
return (self.x.map(lambda x: x*2)
.immutable()
.keep(gt=5))
So, basically, you change self.x with the map, but don't necessarily want to change it with the keep().(I'm not saying it is the right thing, just why it's done that way.)