add generic interfaces