Software transactional memory holds much promise but has seen few practical deployments inspite of a decade of research. This work examines the reasons behind this and argues for a software transactional memory system that can be applied directly to machine code to elide legacy locks. This eliminates any changes to the software engineering process (language, compilers, debuggers) and results in an implementation that can be applied optionally at runtime. A theoretical treatment of the underlying interactions of weak atomicity with the x86 memory consistency model as well a practical implementation and its evaluation is presented.