Changes to the feature extraction
Now the code can use a variable number of eigenvectors
Todo:
1. Split into multiple files
2. Ammortize feature extraction