explain the general approach to @laughedelic
review changes, migrate to implicit classes, add Tagged