Not good! You are changing API here. Now user can pass some old Stream object into it and we have no control over it. Public API should allow only ID. Don't use polymorphic attributes.

So I would suggest a refactor, you split `append` into code which takes `stream_id` and maps to `stream` and calls `_append` or something. And then internally, for operators, you call `_append` directly.