fromNewShuffledDeck()
.flatMap(deck_id => obs.of(deck_id)
.pipe(drawCards(52))
.filter(isNumbered)
.bufferCount(3)
.pipe(wrapWithSequenceNumber)
.groupBy(sequenceNumberModulo(numberOfPlayers))
.take(numberOfPlayers)
.map(playerHand => playerHand
.flatMap(unwrap)
.pipe(addCardToPile(deck_id, playerHand.key))
.pipe(renderImage)
.scan(addToElement, html`<div>Player ${playerHand.key}<br>`))
.pipe(memorize)
.combineAll()
.flatMap(divs => obs.from(divs).scan(addToElement, html`<div>`))
.finally(x => currentDeck.next(deck_id)))
.value()