better module structure