Break out into multiple files a la the Stream* roles.