Skip to main content
Upstream
Upstream
  • Product
    24/7 Live Streaming Run cloud channels that stay live around the clock. Live Studio Invite guests, share screens, and add branded overlays in the browser. Multistreaming Send one live feed to YouTube, Twitch, Kick, and RTMP endpoints. Pre-recorded Live Streaming Upload pre-recorded videos & Go Live without the stress of live production. Enterprise Broadcasting setups for teams, labels, and agencies. Free plan 24 hours a month with no watermark.
  • Features
    Scheduling Streams that start and end on their own. Multichat Every platform's chat in one feed. Overlays Layers and widgets in Stream Designer. Stings, jingles and ads Inserts that play between your videos. Playback controls Skip or play any file while you stay live. Audio and video playlists Loop music and visuals separately. Team access Invite your team, each with their own role. RTMP server Stream in from OBS or any encoder. Live Streaming API Run streams, media and queues from code. MCP Server Manage streams from your AI assistant. All features Everything Upstream does, on one page.
  • Platforms
    YouTube live streaming Twitch live streaming Kick live streaming Facebook live streaming Instagram live streaming TikTok TikTok live streaming Rumble live streaming Mixcloud live streaming 30+ more Plus any custom RTMP or SRT destination.
    Platform limits Bitrate and duration caps for each platform. Integrations Setup guides for OBS, vMix, cameras and more.
  • Resources
    Blog Guides and ideas for live streams. Release Notes What's new in Upstream. Free Tools Video, audio and setup tools. Helpdesk Setup help and troubleshooting. Live Streaming FAQ Quick answers about going live. Compare Upstream Upstream vs Restream and more.
  • Pricing
Login Sign up for free
Always-on 24/7 Live Streaming Run cloud channels that stay live around the clock.
Explore
Real-time live Live Studio Invite guests, share screens, and add branded overlays in the browser.
Explore
One stream, 30+ platforms Multistreaming Send one live feed to YouTube, Twitch, Kick, and RTMP endpoints.
Explore
Schedule & Automate Pre-recorded Live Streaming Upload pre-recorded videos & Go Live without the stress of live production.
Explore
Enterprise Broadcasting setups for teams, labels, and agencies. Explore Free plan 24 hours a month with no watermark. Explore
Scheduling Streams that start and end on their own. Multichat Every platform's chat in one feed. Overlays Layers and widgets in Stream Designer. Stings, jingles and ads Inserts that play between your videos. Playback controls Skip or play any file while you stay live. Audio and video playlists Loop music and visuals separately. Team access Invite your team, each with their own role. RTMP server Stream in from OBS or any encoder.
Live Streaming API Run streams, media and queues from code.
MCP Server Manage streams from your AI assistant.
All features Everything Upstream does, on one page.
YouTube live streaming. 24/7 channels with midroll ads. Twitch live streaming. Streams restart on their own at 48 hours. Kick live streaming. Stay live with your computer off. Facebook live streaming. Schedule lives that start on their own. Instagram live streaming. Go live from your browser or the cloud. TikTok TikTok live streaming. Go live on TikTok and Instagram at once. Rumble live streaming. Add Rumble to your YouTube or Kick stream. Mixcloud live streaming. DJ sets and radio shows from your browser. 30+ more Plus any custom RTMP or SRT destination.
Platform limits Bitrate and duration caps for each platform.
Integrations Setup guides for OBS, vMix, cameras and more.
Blog Guides and ideas for live streams. Release Notes What's new in Upstream. Free Tools Video, audio and setup tools. Helpdesk Setup help and troubleshooting. Live Streaming FAQ Quick answers about going live. Compare Upstream Upstream vs Restream and more.
Multi-chat

Multichat for Live Streams on YouTube, Twitch, Kick and Rumble

Every comment from every platform you stream to lands in one feed, right next to your stream. Live, scheduled or 24/7, on every plan, the free one too.

Start Streaming Free Chat is on every plan. 24 free hours a month, no credit card.

Every platform's chat in one place

The Chat tab sits beside your stream in Upstream, with every message from YouTube, Twitch, Kick and Rumble in one feed.

Every platform in one feed

YouTube, Twitch, Kick and Rumble messages land in one list as they arrive, each marked in its platform's colour. Tap a channel to see only its chat.

2 / 10 on stageOn Air
MiaLeo
SourceStagePeopleBackstageChatDestinationsTriggers
ChatLive

Viewer messages from every destination, in one feed.

AllLofi HourslofihourslofihoursLofiHours
Mmira.drawsthis mix got me through finals week
Nnightowl_44youtube and kick chat in here too? nice
DWDana Wwhat's the song at 2:14?
Ppixelpawsfirst time catching it live
$5.00TBTom BeckerKeep this one running all night
Kkai_riversbe nice in chat everyone

Badges, emotes and Super Chats

Owners, moderators, members and VIPs keep their badges. Emotes show as emotes, and Super Chats, bits, raids and Rumble Rants stand out.

Good connectionOn Air
SourceStagePeopleBackstageChatDestinationsTriggers
ChatLive

Viewer messages from every destination, in one feed.

AllLofi HourslofihourslofihoursLofiHours
LHLofi HoursIt's on Spotify, link in the description
Kkai_riversbe nice in chat everyone
$20.00TBTom BeckerKeep this one running all night
100 bitsBbrewbot_cheer100 for the rain sounds
$10.00 RantRridgelinewatching from Rumble, sound is perfect
Lluna_vtsame time tomorrow?
52 raiders from cozycorner have joined!Ccozycorner
Member for 6 monthsPSPriya S21:04six months of lofi, thank you

Setup

How to set up multichat in Upstream

Manage background
Lofi study session1:04:12
Late night sax48:30
Rainy cottage2:10:05
Night owl1:31:22
Night train57:41
SettingsChatDestinationsTriggers

Destinations

Where this stream goes when it is live.

  • Lofi HoursPrimary destinationChatReady
  • lofihoursMultistream destinationChatReady
  • lofihoursMultistream destinationChatReady
  • LofiHoursMultistream destinationChatReady
Manage destinations

What kind of stream do you want to create?

Choose your stream type and we'll guide you through the setup

Prerecorded and/or 24/7Loop videos, images, or audio (24/7 or less), with optional multistreamUpload videos & imagesSchedule or run continuouslyAudio playlistsSet up prerecordedMultistream from OBSStream from OBS, Streamlabs, etc. to multiple platforms at onceConnect OBS or StreamlabsStream to multiple platformsRTMP endpointSet up multistreamingLive StudioGo live from your browser, solo or with guestsBrowser-based streamingInvite guestsScreen sharingSet up live studio
Manage background
Lofi study session1:04:12
Late night sax48:30
Rainy cottage2:10:05
Night owl1:31:22
Night train57:41
SettingsChatDestinationsTriggers
ChatLive

Viewer messages from every destination, in one feed.

AllLofi HourslofihourslofihoursLofiHours
Mmira.drawsthis mix got me through finals week
Nnightowl_44youtube and kick chat in here too? nice
$10.00 RantRridgelinewatching from Rumble, sound is perfect
Ppixelpawsfirst time catching it live

On every stream, set up once

24/7 playlists, scheduled videos, Live Studio and OBS streams all get the same chat. Each platform takes a minute to connect.

On every stream, even 24/7

Chat sits next to your playlist on 24/7 and scheduled streams, and next to the stage in Live Studio and OBS streams. New messages count up while it's closed.

Manage background
Lofi study session1:04:12
Late night sax48:30
Rainy cottage2:10:05
Night owl1:31:22
Night train57:41
SettingsChat123DestinationsTriggers
Playback modeLoop continuouslyPlay once and end

Stream loops your playlists 24/7 until you stop it manually or a schedule ends.

ChatLive

Viewer messages from every destination, in one feed.

AllLofi Hourslofihourslofihours
Ssleepyfox3am crew checking in
$5.00TBTom BeckerKeep this one running all night
Nnightowl_44been here since day one of this stream
Mmira.drawsstill going, love it

Set up once per platform

YouTube and Twitch chat come with the destinations you stream to. Kick needs your channel link if it doesn't know it yet, and Rumble its private chat URL, once.

Manage audioLoop 2:14:36
Midnight tapeUnknown Artist · 3:42
Rain on glassUnknown Artist · 4:05
Last train homeUnknown Artist · 3:18
Paper lanternsUnknown Artist · 2:57
Late night saxUnknown Artist · 4:31
SettingsChatDestinationsTriggers
ChatLive

Viewer messages from every destination, in one feed.

AllLofi HourslofihourslofihoursLofiHours

lofihours: Connecting to Kick chat...

lofihours - Add your Kick channel URL to read this chat.
LofiHours - Add your Rumble Live Streaming API URL to read this chat.
Connect LofiHours chatManage LofiHours chat

Copy your Live Streaming API URL from Rumble.

Rumble Live Streaming API URL••••••••••••••••••••••••••••Save
Connect lofihours chatManage lofihours chat

Enter your public Kick channel URL.

https://kick.com/your_channelhttps://kick.com/lofihoursSave
$10.00 RantRridgelinewatching from Rumble, sound is perfect
Ppixelpawsfirst time catching it live

Compare

Multistream chat compared

Restream Chat, Streamlabs multichat and StreamYard comments next to Upstream, from each company's own pricing and help pages.

Checked October 14, 2026

Where the chat tools differ

CapabilityRestream Chat RestreamStreamlabs MultichatStreamYard CommentsBest fit Upstream Multi-chat
Chat with your computer off
Up to 24 or 40 hours uploaded videos as playlists or loops, on the $79 a month add-on
No streams and chat run from Streamlabs on your computer
No prerecorded streams carry no comments
Yes 24/7 and scheduled streams run in the cloud
Free plan
2 channels with Restream branding
2 platforms one horizontal and one vertical
No multistreaming one destination, StreamYard logo
Up to 10 platforms 24 hours a month, no watermark
Paid plans from
$19 a month 3 channels, $16 billed yearly
$27 a month Ultra, $189 billed yearly
$44.99 a month Core, 3 destinations, $35.99 billed yearly
$30 a month 10 platforms, from 4 streams $20 a stream, $16 billed yearly
Rumble chat
Yes
No
No
Yes with Rumble Rants
Platforms in the feed
8 Twitch, YouTube, Kick, Rumble, Facebook, X, LinkedIn, Discord
5 YouTube, Twitch, Facebook, Kick and X
6 YouTube, Twitch, Kick, Facebook, LinkedIn and X
4 YouTube, Twitch, Kick and Rumble
Replies
Yes on most of its platforms
Some YouTube, Twitch and Facebook Pages
Some YouTube, Twitch, Kick and Facebook Pages
Yes YouTube, Twitch and Kick
Chat on screen and in OBS
Yes overlay, OBS dock and a desktop app
In its apps Streamlabs Desktop, the OBS plugin and the web
Paid plans chat overlay from Core
Yes Stream Designer, OBS browser source and dock
Checked October 14, 2026 Prices in USD, billed monthly unless a cell says yearly. The sources are in the FAQ below.
Restream Chat Restream
Streamlabs Multichat
StreamYard Comments
Start free
No credit card
Chat with your computer off
Restream Chat Restream
Up to 24 or 40 hours uploaded videos as playlists or loops, on the $79 a month add-on
Streamlabs Multichat
No streams and chat run from Streamlabs on your computer
StreamYard Comments
No prerecorded streams carry no comments
Upstream Multi-chat
Yes 24/7 and scheduled streams run in the cloud
Free plan
Restream Chat Restream
2 channels with Restream branding
Streamlabs Multichat
2 platforms one horizontal and one vertical
StreamYard Comments
No multistreaming one destination, StreamYard logo
Upstream Multi-chat
Up to 10 platforms 24 hours a month, no watermark
Paid plans from
Restream Chat Restream
$19 a month 3 channels, $16 billed yearly
Streamlabs Multichat
$27 a month Ultra, $189 billed yearly
StreamYard Comments
$44.99 a month Core, 3 destinations, $35.99 billed yearly
Upstream Multi-chat
$30 a month 10 platforms, from 4 streams $20 a stream, $16 billed yearly
Rumble chat
Restream Chat Restream
Yes
Streamlabs Multichat
No
StreamYard Comments
No
Upstream Multi-chat
Yes with Rumble Rants
Platforms in the feed
Restream Chat Restream
8 Twitch, YouTube, Kick, Rumble, Facebook, X, LinkedIn, Discord
Streamlabs Multichat
5 YouTube, Twitch, Facebook, Kick and X
StreamYard Comments
6 YouTube, Twitch, Kick, Facebook, LinkedIn and X
Upstream Multi-chat
4 YouTube, Twitch, Kick and Rumble
Replies
Restream Chat Restream
Yes on most of its platforms
Streamlabs Multichat
Some YouTube, Twitch and Facebook Pages
StreamYard Comments
Some YouTube, Twitch, Kick and Facebook Pages
Upstream Multi-chat
Yes YouTube, Twitch and Kick
Chat on screen and in OBS
Restream Chat Restream
Yes overlay, OBS dock and a desktop app
Streamlabs Multichat
In its apps Streamlabs Desktop, the OBS plugin and the web
StreamYard Comments
Paid plans chat overlay from Core
Upstream Multi-chat
Yes Stream Designer, OBS browser source and dock
Checked October 14, 2026 Prices in USD, billed monthly unless a cell says yearly. The sources are in the FAQ below. Start free No credit card

Restream Chat alternative

The Restream Chat alternative for streams that never stop

Restream Chat is free, but it only hears your viewers while you stream through Restream. Upstream reads chat on every stream it runs, and the stream doesn't need you there.

No 24 hour wall

Restream playlists stop at 24 hours and loops at 40, on a $79 a month add-on. Upstream loops for as long as you like, chat included.

10 platforms on the free plan

Restream Free sends to 2 channels with its branding. Upstream Free sends to up to 10 of 30+ platforms, with no watermark.

Every stream at one price

Live, scheduled and 24/7 streams are the same $30 a month stream with Upstream, or $16 a stream billed yearly from 4 streams.

Reviews

What Upstream customers say on Trustpilot

Public reviews from people who stream with Upstream.

4.5 ★★★★★242 reviews on Trustpilot
★★★★★ Super helpful staff if you have any questions. No issues with the platform so far. All minor issues were resolved within the same hour. Their customer service is top notch D Davone ★★★★★ I'm a new customer to upstream, but have been using vps for the past year. I've had numerous problems with my previous provider and decided to change. A Anthony ★★★★★ The upstream is amazing, and the stream designer is a really great tool! I can rest assured that the live stream is performing perfectly 24 hours a day, 7 days a week. JM Jordan - MrSpherical ★★★★★ When I decided to run a Stream first I needed to how to do it, and I learned. HC Heidy Cardens ★★★★★ I love how easy Upstream is to use - especially for someone like me who has no technical knowledge of servers. The whole process of a 24/7 live stream was overwhelming to me until I found upstream. AF Alyssa Farris ★★★★★ results speak for themselves. since going live with upstream my stream got 10k views off an account with 900 followers. Marc Ryan Marc Ryan ★★★★★ Super helpful staff if you have any questions. No issues with the platform so far. All minor issues were resolved within the same hour. Their customer service is top notch D Davone ★★★★★ I'm a new customer to upstream, but have been using vps for the past year. I've had numerous problems with my previous provider and decided to change. A Anthony ★★★★★ The upstream is amazing, and the stream designer is a really great tool! I can rest assured that the live stream is performing perfectly 24 hours a day, 7 days a week. JM Jordan - MrSpherical ★★★★★ When I decided to run a Stream first I needed to how to do it, and I learned. HC Heidy Cardens ★★★★★ I love how easy Upstream is to use - especially for someone like me who has no technical knowledge of servers. The whole process of a 24/7 live stream was overwhelming to me until I found upstream. AF Alyssa Farris ★★★★★ results speak for themselves. since going live with upstream my stream got 10k views off an account with 900 followers. Marc Ryan Marc Ryan
★★★★★ Great Experience. Far better than other streaming services like Go Stream, Live Karo etc. A Atif ★★★★★ I'm completely brand-new to the nature of 24/7 livestreams. I needed something a bit specific, Sebastian and Dom were both HUGE helpers in explaining everything so I could easily understand it. NR Nolan Rempel ★★★★★ Just what we needed. AMAZING customer service as well!! PY Paint Your Heaven LLC ★★★★★ Fantastic service, super helpful support team. Would highly recommend. A Alister ★★★★★ I am brand new to stream a 24 seven I had the most amazing help from Dom & Mario!!! To be honest, their customer service is just as amazing as Apple! N Nina ★★★★★ Great Experience. Far better than other streaming services like Go Stream, Live Karo etc. A Atif ★★★★★ I'm completely brand-new to the nature of 24/7 livestreams. I needed something a bit specific, Sebastian and Dom were both HUGE helpers in explaining everything so I could easily understand it. NR Nolan Rempel ★★★★★ Just what we needed. AMAZING customer service as well!! PY Paint Your Heaven LLC ★★★★★ Fantastic service, super helpful support team. Would highly recommend. A Alister ★★★★★ I am brand new to stream a 24 seven I had the most amazing help from Dom & Mario!!! To be honest, their customer service is just as amazing as Apple! N Nina

Show it on stream, answer from one box

Put the chat on screen or in OBS, and reply to YouTube, Twitch and Kick without leaving Upstream.

Chat on your stream

Put the chat on screen with the Stream Designer, or add it to OBS as a browser source and a dock. Viewers on every platform see each other.

Stream canvas (1920x1080)
mira.drawsthis mix got me through finals week pixelpawsfirst time catching it live ridgelinewatching from Rumble, sound is perfect
Chat
OBS browser sourcehttps://studio.upstream.so/chat/overlay/7f3a9c
OBS dockhttps://studio.upstream.so/chat/dock/7f3a9c

Reply without switching tabs

Answer from the Chat panel and your reply goes out on YouTube, Twitch and Kick as your own channel. Nobody waits while you find the right tab.

2 / 10 on stageOn Air
MiaLeo
SourceStagePeopleBackstageChatDestinationsTriggers
ChatLive

Viewer messages from every destination, in one feed.

AllLofi HourslofihourslofihoursLofiHours
DWDana Wwhat's the song at 2:14?
Nnightowl_44heading to bed, great stream
Lluna_vtsame time tomorrow?
LHLofi HoursThanks for hanging out, same time tomorrow
LlofihoursThanks for hanging out, same time tomorrow
LlofihoursThanks for hanging out, same time tomorrow
Reply on
Message your chatThanks for hanging out, same time tomorrow

FAQ

Multichat questions

Multichat puts the chat from every platform you stream to in one feed. In Upstream it’s the Chat tab in the stream builder: YouTube, Twitch, Kick and Rumble messages arrive in one list, each marked with its platform, with badges, emotes, Super Chats, bits, raids and Rumble Rants. You can filter it to one channel at a time.

Yes. Chat is on every plan, the free one too. The free plan gives you 24 hours of streaming a month at 1080p30, with no watermark, to up to 10 of 30+ supported platforms at once. Paid plans are $30 a month for one stream, and from 4 streams it’s $20 a stream, or $16 billed yearly. See pricing.

Not yet. The feed reads YouTube, Twitch, Kick and Rumble. You can still stream to Facebook, Instagram and TikTok with Upstream at the same time, and their comments stay on those apps for now.

Yes. Send your OBS stream to Upstream and it goes out to all your platforms, while the Chat tab shows the chat from every one of them. You can also bring the chat into OBS itself, as a browser source on your stream or as a dock in the OBS window. Setup is in our OBS guide.

Yes, on YouTube, Twitch and Kick. Write in the Chat panel and the reply posts as your own channel on each platform you pick. Rumble messages show in the feed for reading.

Yes. Chat works on every stream Upstream runs: 24/7 and scheduled playlists, Live Studio, OBS input and multistreams. Open the stream in Upstream any time it’s live and the Chat tab has the feed. If nobody touches the page for 15 minutes, YouTube chat pauses until you move the mouse or press a key, and Kick and Rumble keep collecting meanwhile.

As of October 2026, Twitch’s written Terms still bar merged chat from other platforms on the Twitch stream, but Twitch CEO Dan Clancy said in February 2026 that Twitch would no longer take enforcement action for showing combined chat. Reading everyone’s chat in a tool like Upstream’s Chat tab, off screen, was never the problem. More in our guide to Twitch’s unified chat rules.

YouTube chat comes through the YouTube account you stream to, and Twitch reads your channel’s public chat. Kick follows the Kick channel you stream to; if Upstream doesn’t know it yet, paste its public link once. Rumble needs the private Live Streaming API URL from your Rumble account, pasted once. Upstream stores it encrypted and never shows it again. A Kick channel with more than 60 messages a minute is too busy for the feed, so it pauses for an hour.

Restream Chat is free and reads more platforms, but it only receives messages while you stream through Restream, and Restream’s playlists stop at 24 hours and loops at 40 on a $79 a month add-on. Upstream reads chat on every stream it runs, including 24/7 playlists with your computer off, and its free plan sends to up to 10 platforms with no watermark, against 2 with Restream branding on Restream Free. More in Upstream vs Restream.

We checked each company’s own pages on October 14, 2026: Restream chat, reading chat, pricing and playlists; Streamlabs multichat and Ultra; StreamYard comments, chat overlay and pricing. Upstream’s numbers are from the pricing page. Prices change, so check before you buy, and tell us in the chat if something here is out of date.

Pricing · per concurrent stream

One free stream. Paid gets cheaper as you scale.

Start with 1 paid stream at $30/mo, scale to 1000+, and pay less as you add streams: 2 streams are $50/mo, 3 streams are $70/mo, then 4+ streams are $20/stream/mo or $16/stream/mo when billed yearly.

Free plan No credit card
1 stream only
$0 / forever

1 concurrent stream · 24 hr/month

1080p at 30 FPS

Start free
Your price Unlimited streaming
1 stream
$30 / month

$30/stream/mo · 4+ volume rate is $20

Bulk discount · $60 $50/mo

$30 start $20 volume rate
Get 1 stream · $30/mo
Simple pricing while you scale
Every stream includes No add-ons, no upsells. Same on the free plan.
Cloud playout
No bandwidth limits
Scheduled streams Pre-recorded live
Stream recordings
Multistream x10 Stream Designer + overlays Live Studio Playback controls Separate playlists Stings, jingles + ad inserts Team access Live Streaming API MCP for AI assistants Certified for YouTube Live
No watermark
Instant cloud availability*

* Free-plan capacity may be limited during unusual demand.

Unlimited streaming Bulk discount · $60 $50/mo
Start free Get 1 stream · $30/mo
Compare

More on streaming everywhere at once

Where Multi-chat fits with the rest of Upstream.

Multistreaming Multistreaming One stream to up to 10 of 30+ platforms at once, from the browser, OBS or a playlist. See multistreaming Live Studio Live Studio Go live from the browser with guests, screen sharing and overlays, chat beside the stage. See Live Studio Restream Upstream vs Restream Prices, platforms at once and 24/7 limits, side by side. See the comparison
Guides
  • Twitch unified chat rules
  • Multistream to YouTube, Twitch and Kick
  • Restream alternatives
  • Kick streaming software
  • Stream to Rumble
  • Free plan

All your chat in one place

Start free with 24 hours a month, up to 10 platforms at once and every chat in one feed. No credit card, no watermark.

No credit card 1 stream included 24 hours/month Full functionality
Start Streaming Free See pricing
Upstream

Run your streams from the cloud

Free plan: 24 streaming hours a month, no card, no watermark.

4.5 · 242 reviews on Trustpilot
Legal entity
Zukunft d.o.o.
Registered address
Groznjanska 32, 10000 Zagreb
Company VAT ID
Company VAT ID: HR62560895839
About | Contact us | Tools | Content standards | Privacy Policy | Terms of Service | Affiliate terms |

Product

  • Pricing
  • Upstream Features Overview
    • Multistreaming
    • Separate Audio and Video
    • Overlays: Stream Designer
    • Live Streaming Studio
    • Scheduling & Automation
    • Live Playback Controls
    • Play Stings, Jingles and Ads
    • Team Access
  • Enterprise Broadcasting Solutions

Resources

  • Helpdesk
  • Live Streaming FAQ
  • Blog
  • Release Notes
  • Live Streaming API
  • MCP Server
  • Free Live Streaming
  • YouTube Live Streaming
  • RTMP Server
  • Supported Platforms
  • Live Streaming Limits
  • Integrations

Compare Us

  • Compare Upstream
    • Upstream vs Runnel.live
    • Upstream vs OneStream
    • Upstream vs Live247
    • Upstream vs Gyre
    • Upstream vs Streaming Bots
    • Upstream vs Restream
    • Upstream vs StreamYard
    • Upstream vs LiveReacting
    • Upstream vs Playout.video

Free Tools

  • Design tools
  • Video tools
  • Audio tools
  • AI tools
  • Setup checks

Use cases

  • For Creators
  • For Music Labels
  • Church Streaming
  • VTuber Streaming
  • Multi-Channel Streaming

© 2026 Upstream. All rights reserved.