नदियाँ
एक नदी एक यात्रा है जो चरणों में काटी गई है - एक साइन-अप, एक चेकआउट, एक नवीनीकरण - जिसका मार्ग उस उत्तर के आधार पर बदल सकता है जो आगंतुक देता है। पैकेज याद रखता है कि प्रत्येक आगंतुक कहाँ खड़ा है, उन्हें उन चरणों के माध्यम से ले जाता है जो वे देख सकते हैं, और उन्हें वापस भेजता है जहाँ वे संबंधित हैं जब वे आगे बढ़ने की कोशिश करते हैं।
कर्सर का एक पेड़
एक नदी एक पेड़ के रूप में बनाई जाती है, सूची के रूप में नहीं। एक चरण जो दो स्थानों से पहुँचा जाता है, वह दो कर्सर है, प्रत्येक के पास अपना हैश और अपने संग्रहित मान हैं: यही वह होता है जो एक शाखा को ऐसे चरण देने की अनुमति देता है जो दूसरी के पास नहीं है, और जिस रास्ते से आप आए हैं, वह प्रत्येक नदी के अंत में पढ़ा जाता है।
डेटाबेस में एक सत्र
एक नदी खोलने से एक सत्र बनता है, जिसे ब्राउज़र सत्र केवल इसके आईडी द्वारा जानता है। यह उन मानों को धारण करता है जो चरण संग्रहित करते हैं, और अंतिम चरण दिखाए जाने के एक दिन बाद समाप्त हो जाता है - या इससे पहले, जब वह चरण इसके लिए कहता है। समाप्त सत्र को शेड्यूलर द्वारा हर 15 मिनट में हटा दिया जाता है; पूर्ण और लंबित सत्रों को रखा जाता है।
जहाँ आगंतुक जा सकता है
प्रत्येक चरण यह तय करता है कि इसे दिखाया जा सकता है या नहीं और अन्यथा आगंतुक को कहाँ भेजा जाए। लिंक और बटन समान नियमों से बनाए जाते हैं, इसलिए एक लिंक कभी भी वापस पुनर्निर्देशित नहीं करता: जहाँ सड़क विभाजित होती है वहाँ कोई अगला बटन नहीं, भुगतान के बाद पीछे जाने का कोई तरीका नहीं, बंद सत्र में लौटने के लिए कुछ भी नहीं।