refactor to "Module Pattern"