implemented optional fields