read from file
Merge with ppold's