improved generic bounds in the builder builders
made Classifier an interface and added AbstractClassifier to resolve issues with generics