diff --git a/components/streams/src/builder.cpp b/components/streams/src/builder.cpp
index 91fa4cfa250df2388fee63cf0e25faff01aebbdd..c0e1590991f62ff2e2174bab34a463758b98bb5e 100644
--- a/components/streams/src/builder.cpp
+++ b/components/streams/src/builder.cpp
@@ -91,10 +91,12 @@ ftl::data::Frame &Builder::get(int64_t timestamp, size_t ix) {
 	auto fs = _get(timestamp);
 
 	if (ix >= fs->frames.size()) {
-		throw FTL_Error("Frame index out-of-bounds - " << ix << "(" << fs->frames.size() << ")");
-		//while (fs->frames.size() < size_) {
-		//	fs->frames.push_back(std::move(pool_->allocate(ftl::data::FrameID(fs->frameset(), + fs->frames.size()), fs->timestamp())));
-		//}
+		//throw FTL_Error("Frame index out-of-bounds - " << ix << "(" << fs->frames.size() << ")");
+
+		// FIXME: This is really dangerous
+		while (fs->frames.size() < size_) {
+			fs->frames.push_back(std::move(pool_->allocate(ftl::data::FrameID(fs->frameset(), + fs->frames.size()), fs->timestamp())));
+		}
 	}
 
 	//if (fs->frames.size() < size_) fs->frames.resize(size_);
diff --git a/components/structures/src/new_frame.cpp b/components/structures/src/new_frame.cpp
index fc4e92006ecda3b6953b109b2f7dd8cf6c9ab48c..f969023fc3ea6a4715a74a0b9ee57bb1ebc1faf5 100644
--- a/components/structures/src/new_frame.cpp
+++ b/components/structures/src/new_frame.cpp
@@ -243,6 +243,8 @@ void Frame::merge(Frame &f) {
 		d.status = ChannelStatus::VALID;
 		touch(x.first);
 	}
+	f.status_ = FrameStatus::RELEASED;
+	f.changed_.clear();
 }
 
 void Frame::moveTo(Frame &f) {