         case ackVal:
             Serial.println(F("Heartbeat byte received"));
 
+            // Get the altitude value
             float altitude = getAltitude();
 
+            // Construct the packet. Has a one-byte header.
             byte packetData[sizeof(float) + 1] = { heightInitialVal };
+            // Get a pointer to the last 4 bytes of the packet buffer 
+            // and set it to the altitude value
             float* packetFloatPortion = (float*)&packetData[1];
             *packetFloatPortion = altitude;
 

        if (recvByte == heightInitialVal)
        {
            // TODO: Figure out why the first byte isn't already gone
            byte buffer[sizeof(float) + 1];
            receiveData(&buffer, sizeof(buffer));

            lastAltitude = *(float*)(&(buffer[1]));
            Serial.println("Got altitude " + String(lastAltitude));
        }

    return val;
}

// Sends arbitrary data of length numBytes from the given address
byte sendData(void* val, int numBytes) {
    byte recvByte;

    if (radio.available())
        Serial.println(F("Data available before request was sent! This probably means something was not read correctly."));

    // Print bytes that are going to be sent
    Serial.print(F("Sending data {"));
    for (int i = 0; i < numBytes; i++)
    {
