interface of generic