allow mutation
support local variables