more refactoring.
split up projects function into subfunctions.
added more benchmarks and testdata.