make apply immutable