Optimizing multi-class fleet compositions for shared Mobility-as-a-Service