Better code separation
Add new in-memory strategy
Improve algorithm and change default strategy to inmemory
Merge branch 'csv-strategy'