public void Initialize(InputType inputType, PlaneType planeType)            //TODO and weapons and such
    {
        PlayerInput playerInput = PlayerInput.Get(inputType);

        playerMovementSystem.playerInput = playerInput;
        playerWeaponSystem.playerInput   = playerInput;
        GameObject modelObject;
        GameObject SPWObject;

        switch (planeType)
        {
        case PlaneType.SPECTRE:
            modelObject = InstantiatePrefabAsChild(spectrePlanePrefab);
            SPWObject   = InstantiatePrefabAsChild(spectreSPWPrefab);
            break;

        case PlaneType.WASP:
            modelObject = InstantiatePrefabAsChild(waspPlanePrefab);
            SPWObject   = InstantiatePrefabAsChild(waspSPWPrefab);
            break;

        case PlaneType.GRIFFON:
            modelObject = InstantiatePrefabAsChild(griffonPlanePrefab);
            SPWObject   = InstantiatePrefabAsChild(griffonSPWPrefab);
            break;

        case PlaneType.RAZORBACK:
            modelObject = InstantiatePrefabAsChild(razorbackPlanePrefab);
            SPWObject   = InstantiatePrefabAsChild(razorbackPlanePrefab);
            break;

        case PlaneType.ARROWHEAD:
            modelObject = InstantiatePrefabAsChild(arrowheadPlanePrefab);
            SPWObject   = InstantiatePrefabAsChild(arrowheadSPWPrefab);
            break;

        default:
            throw new UnityException("unknown plane type");
        }
        playerModel = modelObject.GetComponent <PlayerModel>();
        playerMovementSystem.playerModel = playerModel;
        playerWeaponSystem.playerModel   = playerModel;
        playerHealthSystem.playerModel   = playerModel;
        playerDeathSystem.playerModel    = playerModel;
        PlayerSpecialWeapon playerSPW = SPWObject.GetComponent <PlayerSpecialWeapon>();

        playerWeaponSystem.specialWeapon = playerSPW;
    }