generic class
class api structure