why do we need this class?