Adding special type classification.
Creating new selection algorithms. Plus a lot refactoring.