diff --git a/src/Lib/Ass/Line.cc b/src/Lib/Ass/Line.cc
index af9448cb6ca28372faf56104ff0fad8025d07471..9e215edf10ed30057d0a6a277369c26b694f3dfc 100644
--- a/src/Lib/Ass/Line.cc
+++ b/src/Lib/Ass/Line.cc
@@ -74,7 +74,7 @@ Line::updateContent() noexcept
 {
     ___contentAsText = "";
     for (const auto &syl : content)
-        ___contentAsText.append(syl.getContent());
+        ___contentAsText.append(syl.getAssText());
 }
 
 void
@@ -191,7 +191,7 @@ Line::getLineAsText() const noexcept
 }
 
 void
-Line::setContent(const QVector<Syl> &syls) noexcept
+Line::setContent(const QVector<Syl> syls) noexcept
 {
     content = syls;
     updateContent();
diff --git a/src/Lib/Ass/Line.hh b/src/Lib/Ass/Line.hh
index 48dfd1d835996b89a294f600c6d041781989985c..9d84bc2a88576ad50a147b844bf7f49c27a1a30c 100644
--- a/src/Lib/Ass/Line.hh
+++ b/src/Lib/Ass/Line.hh
@@ -46,7 +46,7 @@ public:
     StyleProperties getStyleProperties() const noexcept;
     StyleWeakPtr getStyle() const noexcept;
     const QVector<Syl> &getContent() const noexcept;
-    void setContent(const QVector<Syl> &) noexcept;
+    void setContent(const QVector<Syl>) noexcept;
 
     QVector<Syl> *getContentPtr() noexcept; // FIXME: remove me
 
diff --git a/src/Lib/Ass/Syl.cc b/src/Lib/Ass/Syl.cc
index f98b82895cc8ff7ab65458b23acc2059a3827f8a..dd8ba4737def942592d5304e3459204bdaf8870a 100644
--- a/src/Lib/Ass/Syl.cc
+++ b/src/Lib/Ass/Syl.cc
@@ -37,6 +37,12 @@ Syl::getContent() const noexcept
     return content;
 }
 
+QString
+Syl::getAssText() const noexcept
+{
+    return QString("{\\k%1}").arg(duration) + content;
+}
+
 quint64
 Syl::getDuration() const noexcept
 {
diff --git a/src/Lib/Ass/Syl.hh b/src/Lib/Ass/Syl.hh
index 1b00a40eb826e75b3b163d85799e2eca274d7ec4..91600b12b7ab75d8280888d6b8a9feffb69e09cf 100644
--- a/src/Lib/Ass/Syl.hh
+++ b/src/Lib/Ass/Syl.hh
@@ -32,6 +32,8 @@ public:
     QString getContent() const noexcept;
     quint64 getDuration() const noexcept;
 
+    QString getAssText() const noexcept;
+
     void setDuration(quint64) noexcept;
 
 private:
diff --git a/src/Lib/Document/CRTPSubDocument.hh b/src/Lib/Document/CRTPSubDocument.hh
index 169c10961f5aa7ba9c784f18f5e31456d0086c48..92954fabd2f5557dda559bb0d86d0aa2080dde04 100644
--- a/src/Lib/Document/CRTPSubDocument.hh
+++ b/src/Lib/Document/CRTPSubDocument.hh
@@ -142,8 +142,7 @@ public:
         } catch (const std::runtime_error &e) {
             ret->logDebug() << "Failed to init ASS subdocument from internal: " << e.what();
             ret.reset();
-            // FIXME: currently terminate, but should be changed to stop the loading of the document
-            throw e;
+            // FIXME: currently not re-throwing, but the loading of the document should be halted here
         }
 
         return ret;
diff --git a/src/UI/DocumentViews/AudioVisualizer/TimingLine.cc b/src/UI/DocumentViews/AudioVisualizer/TimingLine.cc
index ad2c0e57601ebf614719b6efebaf81112744e0df..2b41a8dcb75bbd53902e979113d8633ffcb773c1 100644
--- a/src/UI/DocumentViews/AudioVisualizer/TimingLine.cc
+++ b/src/UI/DocumentViews/AudioVisualizer/TimingLine.cc
@@ -9,9 +9,9 @@ using namespace Vivy;
     connect(sep, &TimingSeparator::enterPress, this, &TimingLine::sepEnterPress);                  \
     connect(sep, &TimingSeparator::exitPress, this, &TimingLine::sepExitPress);
 
-TimingLine::TimingLine(Ass::Line *lineptr, int index, QGraphicsItem *parent)
+TimingLine::TimingLine(Ass::Line& _line, int index, QGraphicsItem *parent)
     : QGraphicsObject(parent)
-    , line(*lineptr)
+    , line(_line)
     , lineIndex(index)
 {
     setPos(TimingUtils::posFromMs(int(line.getStart()) * 10), TimingUtils::axisHeight());
diff --git a/src/UI/DocumentViews/AudioVisualizer/TimingLine.hh b/src/UI/DocumentViews/AudioVisualizer/TimingLine.hh
index fbaf7f0e1f7db0eb15c1bb30513b45ad6438523b..3d438f3c612c6916282bd3743ca16f18af4c2457 100644
--- a/src/UI/DocumentViews/AudioVisualizer/TimingLine.hh
+++ b/src/UI/DocumentViews/AudioVisualizer/TimingLine.hh
@@ -11,13 +11,13 @@ namespace Vivy
 class TimingLine final : public QGraphicsObject {
     Q_OBJECT
 public:
-    explicit TimingLine(Ass::Line *, int, QGraphicsItem * = nullptr);
+    explicit TimingLine(Ass::Line&, int, QGraphicsItem * = nullptr);
 
     QRectF boundingRect() const override;
     void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
 
 private:
-    Ass::Line line;
+    Ass::Line& line;
     QVector<TimingSeparator *> seps;
     QVector<TimingSyl *> timingSyls;
     int lineIndex;
diff --git a/src/UI/DocumentViews/AudioVisualizer/TimingScene.cc b/src/UI/DocumentViews/AudioVisualizer/TimingScene.cc
index ea47784c1b90fff8e1fd39a888fef3ed8c46b049..39760c37eeb61773c695e8ec30c09c574b1c70f6 100644
--- a/src/UI/DocumentViews/AudioVisualizer/TimingScene.cc
+++ b/src/UI/DocumentViews/AudioVisualizer/TimingScene.cc
@@ -63,8 +63,8 @@ TimingScene::rebuildScene()
     if (auto assDocument = rootVivyDocument.getAssSubDocument()) {
         QVector<Ass::LinePtr> lines = assDocument->getLines();
         for (int i = 0; i < lines.size(); ++i) {
-            if (auto line = lines.at(i).get()) {
-                TimingLine *l = new TimingLine(line, i);
+            if (auto line = lines.at(i)) {
+                TimingLine *l = new TimingLine(*line, i);
                 l->setVisible(false);
                 addItem(l);
                 timingLines.append(l);