Much faster and uses less memory

Doesn't read the file into memory