oops, we need the arraycopy() for immutability