implement optional fields