improvements + parallelisation