value object example (incomplete)