fix implementations to really improve external memory approach