generalized portal class