Refactored Random<> abstraction