major update from the other fork on github