Why is this class generic?