requires card class