change module style from returning object --> returning function as to support multiple instantiation