This document discusses the challenges and pitfalls of implementing instrumentation using low-level hooks like run:with:in: in Smalltalk. It shows that such approaches lead to inefficient and complex instrumentation code that must handle issues like meta-recursion and concurrency. Better support is needed from the language, with safe, stratified proxies and efficient abstractions to make instrumentation easier to implement correctly. Examples demonstrate the performance overhead of different instrumentation techniques and how it can be reduced with optimizations like delayed analysis and customized inlined handlers.