Gun should spawn when player spawns, but nothing happens, no errors

the script are set up into multiple different scripts, there are no errors, and no gun spawns at all, I have the correct transforms and all the variables set up properly.

Variables:

public GunTypes Type;
    public string Name;
    public GameObject ModelPrefab;
    public Vector3 spawnpoint;
    public Vector3 spawnrot;

    public ShootConfiguration gunTypesScriptibule;
    public TrainconfigScriptable trailconfigScriptable;

    private MonoBehaviour ActiveMono;
    private GameObject Model;
    private float LastShootime;
    public ParticleSystem ShootSystem;
    private ObjectPool<TrailRenderer> TrailPool;

spawn Void:

 public void Spawn(Transform Parent, MonoBehaviour Activemono)
    {
        this.ActiveMono = ActiveMono;
        LastShootime = 0;
        TrailPool = new ObjectPool<TrailRenderer>(CreateTrail);

        Model = Instantiate(ModelPrefab);
        Model.transform.SetParent(Parent, false);
        Model.transform.localPosition = spawnpoint;
        Model.transform.localRotation = Quaternion.Euler(spawnrot);
    }

gun select script:

    void start()
    {
        gun gun = Guns.Find(gun => gun.Type == Gun);
        if(gun == null)
        {
            Debug.LogError($"no gun found for gun typr: {gun}");
            return;
        }
        ActiveGun = gun;
        gun.Spawn(GunParent, this);
    }