presented at event OOPSLA09: ACM SIGPLAN Object Oriented Programming Systems and Applications Conference Conference