Updated with Module pattern