! Rewrite widget and layout type inference; break tweaks and snails into smaller traits