All methods should deal with immutable objects