Don't allocate an array for a gathering write if it is not needed
Allocate setters lazily
Change the proxy handler to act like a filter
Move path matching into a seperate class