Use LinkedHashMap instead of HashMap, tweaks

LinkedHashMap preserves insertion order, whereas HashMap does not
(prevents attributes from getting shuffled around)
Remove correctName() from adopt() - name is corrected before calling
adopt(), gives slightly more control.