add ref
Complete rewrite using module patterning