It seems possible to change the type to unsigned long long in Region::Impl and add new functions to Region. That should not break anything and first tests work fine for me.