added all the variable header types and made VariableHeader an interface