abstract classifier doesn't need TF