831/638 (repeat yourself, removed hash save/load)