Add cal

What if values.size() < header.size()?  That'll throw an exception, the cause of which won't necessarily be obvious to the user.
What if values.size() > header.size()?  You're silently dropping the extra fields.  Might be indicative of an error, but the user won't be alerted.