Separating concerns through a better module structure