Object reference not set to an instance of an object.. but I'm pretty sure it is

The error

NullReferenceException: Object reference not set to an instance of an object Deck.Start () (at Assets/Scripts/World/Deck.cs:32)

I’ve had this issue with both the Deck and Atlas variables so far

public class Game_Manager : MonoBehaviour
        public Deck Game_Deck;
        public GameObject Deck_Obj;

    //Awake is called when the object is initialized into memory
    private void Awake()

    // Start is called before the first frame update
    void Start()
        Deck_Obj = new GameObject("Deck");
        Game_Deck = Deck_Obj.GetComponent<Deck>();
public class Deck : MonoBehaviour 
    public const int DECK_SIZE = 52;
    public Transform Deck_Root;
    public Card[] Cards = new Card[DECK_SIZE];

    public SpriteAtlas Atlas;
    public Sprite Back;

    Sprite[] Faces = new Sprite[DECK_SIZE];

    public void Awake()

        Atlas = (SpriteAtlas)Resources.Load("Deck_Atlas");
        Back = (Sprite)Resources.Load("Card_Back");


    public void Start()

        Deck_Root = this.transform;

        for (int i = 0; i < DECK_SIZE; i++)
            Faces[i] = Atlas.GetSprite(i.ToString());
            Cards[i].Constuctor(i, Faces[i], ref Back, ref Deck_Root);

When all the information for generating a deck object, and 52 card objects parented to the deck object. inside the loop for creating the card objects I would assign them a sprite and a position. It worked and looked nice, but I realized I had no way of storing information about my card objects no a way to access them to change if the are face up or not. I decided to split my script into 3 classes. The Game_Manager which creates a new deck object with a Deck.cs component. The deck then creates an array of 52 card objects each with their own card.cs components. I am having trouble getting the scripts to load from each other and cooperate.

More context.