Practising Clojurians rely on facilities implemented in terms of deftype and defrecord every day - data structures, channels and buffers, transducible contexts, custom control structures... This talk aims to draw lessons on the most effective use of both from several examples of effective use in Clojure and in ClojureScript, as well as a closer look at some of the most interesting details of their own implementation and their relationship to protocols and interfaces.