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