fleshing out serialization & class hierarchy