Value object pattern implementation