use anonymous field to fullfill and enforce the interface contract