re-worked module structure