Design considerations for ML-style module systems