diff --git a/athenasub/include/athenasub/athenasub.h b/athenasub/include/athenasub/athenasub.h
index 72c9df62eda721f7deae02214a8468b457bf2d2f..e16140703dd83fc06b104f7599a4117f14738132 100644
--- a/athenasub/include/athenasub/athenasub.h
+++ b/athenasub/include/athenasub/athenasub.h
@@ -43,5 +43,8 @@
 #include "interfaces.h"
 #include "range.h"
 
-
 extern "C" ATHENA_API Athenasub::ILibAthenaSub* CreateLibAthenasub(const char* hostName);
+
+#ifdef _WIN32
+#include "athenawin.h"
+#endif
diff --git a/athenasub/include/athenasub/exception.h b/athenasub/include/athenasub/exception.h
index 09b5af8c8032b45b8517e694f3f72ecf0c312216..cdddec7d515c58c6a495a9335abd56b3942ca319 100644
--- a/athenasub/include/athenasub/exception.h
+++ b/athenasub/include/athenasub/exception.h
@@ -66,8 +66,8 @@ namespace Athenasub {
 		int GetCode() { return code; }
 
 	private:
-		static const char* GetMessageChar(int code);
-		static const char* GetMessageFile(int code,const char *file,long line);
+		static std::string GetMessageChar(int code);
+		static std::string GetMessageFile(int code,const char *file,long line);
 
 		ExceptionList code;
 	};
diff --git a/athenasub/include/athenasub/interfaces.h b/athenasub/include/athenasub/interfaces.h
index 0b36a953f21bcfc6d00e302f1591dadf510b47e0..71126638c7e749e41d8aa09ded6289da93f55d2c 100644
--- a/athenasub/include/athenasub/interfaces.h
+++ b/athenasub/include/athenasub/interfaces.h
@@ -64,6 +64,7 @@ namespace Athenasub {
 	class ISection;
 	class IDeltaCoder;
 	class CController;
+	class CAction;
 
 
 	// Smart pointers
@@ -89,6 +90,7 @@ namespace Athenasub {
 	typedef shared_ptr<const IDialogue> ConstDialogue;
 	typedef shared_ptr<const IStyle> ConstStyle;
 	typedef shared_ptr<const IModel> ConstModel;
+	typedef shared_ptr<const ISection> ConstSection;
 
 
 	// Lists
@@ -101,7 +103,7 @@ namespace Athenasub {
 		friend class CFormatHandler;
 		friend class CActionList;
 		friend class CController;
-		friend class IAction;
+		friend class CAction;
 
 	protected:
 		virtual void ProcessActionList(CActionList &actionList,int type=0) = 0;
@@ -121,13 +123,16 @@ namespace Athenasub {
 		virtual void Save(wxOutputStream &output,Format format=Format(),const String encoding="UTF-8") = 0;
 
 		virtual void AddSection(String name) = 0;
-		virtual Section GetSection(String name) const = 0;
-		virtual Section GetSectionByIndex(size_t index) const = 0;
-		virtual size_t GetSectionCount() const = 0;
+		virtual Section GetSection(String name) = 0;
+		virtual Section GetSectionByIndex(size_t index) = 0;
 
 	public:
 		virtual ~IModel() {}
 
+		virtual ConstSection GetSection(String name) const = 0;
+		virtual ConstSection GetSectionByIndex(size_t index) const = 0;
+		virtual size_t GetSectionCount() const = 0;
+
 		virtual Controller CreateController()=0;
 		virtual Format GetFormat() const=0;
 		virtual void AddListener(View listener)=0;
@@ -347,10 +352,10 @@ namespace Athenasub {
 	class IAction {
 	public:
 		virtual ~IAction() {}
-		virtual Action GetAntiAction(const IModel& model) const = 0;
-		virtual void Execute(IModel& model) = 0;
+		virtual Action GetAntiAction() const = 0;
+		virtual void Execute() = 0;
 
-		Section GetSection(const IModel& model,const String &name) const { return model.GetSection(name); }
+		//virtual Section GetSection(const String &name) const = 0;
 	};
 
 
diff --git a/athenasub/src/action.cpp b/athenasub/src/action.cpp
index 582656b33a8f9c87de4091faf3ffd2d950ff33ae..13ecd9aeebedf75d6b1f885c5642504d81469982 100644
--- a/athenasub/src/action.cpp
+++ b/athenasub/src/action.cpp
@@ -42,29 +42,28 @@ using namespace Athenasub;
 
 ///////////////
 // Constructor
-ActionInsert::ActionInsert(Entry data,int line,const String &sName)
-: entry(data), lineNumber(line), section(sName) {}
+ActionInsert::ActionInsert(Model model,Entry data,int line,const String &sName)
+: CAction(model), entry(data), lineNumber(line), section(sName) {}
 
 
 /////////////////////////////////
 // Create anti-action for insert
-Action ActionInsert::GetAntiAction(const IModel& model) const
+Action ActionInsert::GetAntiAction() const
 {
-	(void) model;
 	String sect = section;
 	if (section.IsEmpty()) sect = entry->GetDefaultGroup();
-	return Action(new ActionRemove(lineNumber,sect));
+	return Action(new ActionRemove(GetModel(),lineNumber,sect));
 }
 
 
 /////////////////////
 // Execute insertion
-void ActionInsert::Execute(IModel& model)
+void ActionInsert::Execute()
 {
 	// Find the section to insert it on
 	String sectionName = section;
 	if (sectionName.IsEmpty()) sectionName = entry->GetDefaultGroup();
-	Section sect = GetSection(model,sectionName);
+	Section sect = GetSection(sectionName);
 
 	// Insert the line
 	sect->AddEntry(entry,lineNumber);
@@ -77,28 +76,28 @@ void ActionInsert::Execute(IModel& model)
 
 ///////////////
 // Constructor
-ActionRemove::ActionRemove(int line,const String &sName)
-: lineNumber(line), section(sName) {}
+ActionRemove::ActionRemove(Model model,int line,const String &sName)
+: CAction(model), lineNumber(line), section(sName) {}
 
 
 /////////////////////////////////
 // Create anti-action for remove
-Action ActionRemove::GetAntiAction(const IModel& model) const
+Action ActionRemove::GetAntiAction() const
 {
-	Section sect = GetSection(model,section);
+	Section sect = GetSection(section);
 	Entry entry = sect->GetEntry(lineNumber);
-	return Action(new ActionInsert(entry,lineNumber,section));
+	return Action(new ActionInsert(GetModel(),entry,lineNumber,section));
 }
 
 
 ///////////////////
 // Execute removal
-void ActionRemove::Execute(IModel& model)
+void ActionRemove::Execute()
 {
 	// Find the section to remote it from
 	String sect = section;
 	if (sect.IsEmpty()) THROW_ATHENA_EXCEPTION(Exception::TODO); // TODO
-	Section section = GetSection(model,sect);
+	Section section = GetSection(sect);
 
 	// Remove the line
 	section->RemoveEntryByIndex(lineNumber);
@@ -109,19 +108,19 @@ void ActionRemove::Execute(IModel& model)
 
 ////////////////
 // Constructors
-ActionModify::ActionModify(Entry data,int line,const String &sName,bool _noTextFields)
-: entry(data), lineNumber(line), section(sName), noTextFields(_noTextFields) {}
+ActionModify::ActionModify(Model model,Entry data,int line,const String &sName,bool _noTextFields)
+: CAction(model), entry(data), lineNumber(line), section(sName), noTextFields(_noTextFields) {}
 
-ActionModify::ActionModify(shared_ptr<void> _delta,int line,const String &sName)
-: delta(_delta), lineNumber(line), section(sName), noTextFields(false) {}
+ActionModify::ActionModify(Model model,shared_ptr<void> _delta,int line,const String &sName)
+: CAction(model), delta(_delta), lineNumber(line), section(sName), noTextFields(false) {}
 
 
 /////////////////////////////////
 // Create anti-action for insert
-Action ActionModify::GetAntiAction(const IModel& model) const
+Action ActionModify::GetAntiAction() const
 {
 	// Get section and original line
-	Section sect = GetSection(model,section);
+	Section sect = GetSection(section);
 	Entry oldEntry = sect->GetEntry(lineNumber);
 
 	// Try to get a delta
@@ -130,24 +129,24 @@ Action ActionModify::GetAntiAction(const IModel& model) const
 		VoidPtr _delta;
 		if (entry) _delta = deltaCoder->EncodeDelta(entry,oldEntry,!noTextFields);
 		else _delta = deltaCoder->EncodeReverseDelta(delta,oldEntry);
-		return Action(new ActionModify(_delta,lineNumber,section));
+		return Action(new ActionModify(GetModel(),_delta,lineNumber,section));
 	}
 
 	// Store the whole original line
 	else {
-		return Action(new ActionModify(oldEntry,lineNumber,section,noTextFields));
+		return Action(new ActionModify(GetModel(),oldEntry,lineNumber,section,noTextFields));
 	}
 }
 
 
 /////////////////////
 // Execute insertion
-void ActionModify::Execute(IModel& model)
+void ActionModify::Execute()
 {
 	// Find the section to modify
 	String sectionName = section;
 	if (sectionName.IsEmpty()) sectionName = entry->GetDefaultGroup();
-	Section sect = GetSection(model,sectionName);
+	Section sect = GetSection(sectionName);
 
 	// Modify the line
 	if (delta) {
@@ -160,18 +159,18 @@ void ActionModify::Execute(IModel& model)
 
 ////////////////////////// Batch Modify line //////////////////////////
 
-ActionModifyBatch::ActionModifyBatch(std::vector<Entry> _entries, std::vector<shared_ptr<void> > _deltas, Selection _selection,const String &_section,bool _noTextFields)
-: entries(_entries), deltas(_deltas), selection(_selection), section(_section), noTextFields(_noTextFields) {}
+ActionModifyBatch::ActionModifyBatch(Model model,std::vector<Entry> _entries, std::vector<shared_ptr<void> > _deltas, Selection _selection,const String &_section,bool _noTextFields)
+: CAction(model), entries(_entries), deltas(_deltas), selection(_selection), section(_section), noTextFields(_noTextFields) {}
 
-ActionModifyBatch::ActionModifyBatch(Selection _selection,const String &_section,bool _noTextFields)
-: selection(_selection), section(_section), noTextFields(_noTextFields) {}
+ActionModifyBatch::ActionModifyBatch(Model model,Selection _selection,const String &_section,bool _noTextFields)
+: CAction(model), selection(_selection), section(_section), noTextFields(_noTextFields) {}
 
-Action ActionModifyBatch::GetAntiAction(const IModel& model) const
+Action ActionModifyBatch::GetAntiAction() const
 {
 	// Old, slow method
 	if (false) {
 		// Get section
-		Section sect = GetSection(model,section);
+		Section sect = GetSection(section);
 		size_t len = selection->GetCount();
 		std::vector<VoidPtr> _deltas(len);
 		std::vector<Entry> oldEntries(len);
@@ -192,18 +191,18 @@ Action ActionModifyBatch::GetAntiAction(const IModel& model) const
 			else oldEntries[i] = oldEntry;
 		}
 
-		return Action(new ActionModifyBatch(oldEntries,_deltas,selection,section,noTextFields));
+		return Action(new ActionModifyBatch(GetModel(),oldEntries,_deltas,selection,section,noTextFields));
 	}
 
 	else {
 		// Get section
-		Section sect = GetSection(model,section);
+		Section sect = GetSection(section);
 		size_t len = selection->GetCount();
 
 		// OK, this block warrants some explanation:
 		// Copying smart pointers around all the time is quite slow, so I just create them once and
 		// access the final copies.
-		ActionModifyBatch* antiPtr = new ActionModifyBatch(selection,section,noTextFields);
+		ActionModifyBatch* antiPtr = new ActionModifyBatch(GetModel(),selection,section,noTextFields);
 		Action anti = Action(antiPtr);
 		std::vector<VoidPtr>& _deltas = antiPtr->deltas;
 		std::vector<Entry>& oldEntries = antiPtr->entries;
@@ -230,13 +229,13 @@ Action ActionModifyBatch::GetAntiAction(const IModel& model) const
 	}
 }
 
-void ActionModifyBatch::Execute(IModel& model)
+void ActionModifyBatch::Execute()
 {
 	// Find the section to modify
 	size_t len = selection->GetCount();
 	String sectionName = section;
 	if (sectionName.IsEmpty()) sectionName = entries[0]->GetDefaultGroup();
-	Section sect = GetSection(model,sectionName);
+	Section sect = GetSection(sectionName);
 
 	// For each line...
 	for (size_t i=0;i<len;i++) {
diff --git a/athenasub/src/action.h b/athenasub/src/action.h
index e34b68a575ef38601c712f5932e7fe356d0440b8..0d15b30a0433ba1c6173f91abee6889eb0ae5ea6 100644
--- a/athenasub/src/action.h
+++ b/athenasub/src/action.h
@@ -40,35 +40,47 @@
 
 namespace Athenasub {
 
+	// Action base class
+	class CAction : public IAction {
+	private:
+		mutable Model model;
+
+	protected:
+		CAction(Model _model) { model = model; }
+
+		Model GetModel() const { return model; }
+		Section GetSection(String name) const { return model->GetSection(name); }
+	};
+
 	// Insert line
-	class ActionInsert : public IAction {
+	class ActionInsert : public CAction {
 	private:
 		Entry entry;
 		const String section;
 		int lineNumber;
 
 	public:
-		ActionInsert(Entry entry,int line,const String &section);
+		ActionInsert(Model model,Entry entry,int line,const String &section);
 
-		Action GetAntiAction(const IModel& model) const;
-		void Execute(IModel& model);
+		Action GetAntiAction() const;
+		void Execute();
 	};
 
 	// Remove line
-	class ActionRemove : public IAction {
+	class ActionRemove : public CAction {
 	private:
 		const String section;
 		int lineNumber;
 
 	public:
-		ActionRemove(int line,const String &section);
+		ActionRemove(Model model,int line,const String &section);
 
-		Action GetAntiAction(const IModel& model) const;
-		void Execute(IModel& model);
+		Action GetAntiAction() const;
+		void Execute();
 	};
 
 	// Modify line
-	class ActionModify : public IAction {
+	class ActionModify : public CAction {
 	private:
 		Entry entry;
 		VoidPtr delta;
@@ -77,15 +89,15 @@ namespace Athenasub {
 		bool noTextFields;
 
 	public:
-		ActionModify(Entry entry,int line,const String &section,bool noTextFields);
-		ActionModify(shared_ptr<void> delta,int line,const String &section);
+		ActionModify(Model model,Entry entry,int line,const String &section,bool noTextFields);
+		ActionModify(Model model,shared_ptr<void> delta,int line,const String &section);
 
-		Action GetAntiAction(const IModel& model) const;
-		void Execute(IModel& model);
+		Action GetAntiAction() const;
+		void Execute();
 	};
 
 	// Modify several lines
-	class ActionModifyBatch : public IAction {
+	class ActionModifyBatch : public CAction {
 	private:
 		std::vector<Entry> entries;
 		std::vector<VoidPtr> deltas;
@@ -93,12 +105,12 @@ namespace Athenasub {
 		const String section;
 		bool noTextFields;
 
-		ActionModifyBatch(Selection selection,const String &section,bool noTextFields);
+		ActionModifyBatch(Model model,Selection selection,const String &section,bool noTextFields);
 
 	public:
-		ActionModifyBatch(std::vector<Entry> entries,std::vector<VoidPtr> deltas,Selection selection,const String &section,bool noTextFields);
+		ActionModifyBatch(Model model,std::vector<Entry> entries,std::vector<VoidPtr> deltas,Selection selection,const String &section,bool noTextFields);
 
-		Action GetAntiAction(const IModel& model) const;
-		void Execute(IModel& model);
+		Action GetAntiAction() const;
+		void Execute();
 	};
 }
diff --git a/athenasub/src/actionlist.cpp b/athenasub/src/actionlist.cpp
index f1c1db982fd6b4c0e387b23fd6b241f30626f57f..d7fccb9cd156476da92b448d2f6c80b6a91e6a55 100644
--- a/athenasub/src/actionlist.cpp
+++ b/athenasub/src/actionlist.cpp
@@ -107,7 +107,7 @@ void CActionList::Finish()
 // Create an "insert line" action
 void CActionList::InsertLine(Entry line,int position,const String section)
 {
-	Action action = Action (new ActionInsert(line,position,section));
+	Action action = Action (new ActionInsert(model.lock(),line,position,section));
 	AddAction(action);
 }
 
@@ -116,7 +116,7 @@ void CActionList::InsertLine(Entry line,int position,const String section)
 // Create a "remove line" action
 void CActionList::RemoveLine(int position,const String section)
 {
-	Action action = Action (new ActionRemove(position,section));
+	Action action = Action (new ActionRemove(model.lock(),position,section));
 	AddAction(action);
 }
 
@@ -127,7 +127,7 @@ Entry CActionList::ModifyLine(int position,const String section)
 {
 	Section sect = Model(model)->GetSection(section);
 	Entry entry = sect->GetEntry(position)->Clone();
-	Action action = Action (new ActionModify(entry,position,section,false));
+	Action action = Action (new ActionModify(model.lock(),entry,position,section,false));
 	AddAction(action);
 	return entry;
 }
@@ -152,6 +152,6 @@ std::vector<Entry> CActionList::ModifyLines(Selection selection,const String sec
 	}
 
 	// Generate the action
-	AddAction(Action(new ActionModifyBatch(entries,std::vector<VoidPtr>(),selection,section,false)));
+	AddAction(Action(new ActionModifyBatch(model.lock(),entries,std::vector<VoidPtr>(),selection,section,false)));
 	return entries;
 }
diff --git a/athenasub/src/athenatime.cpp b/athenasub/src/athenatime.cpp
index 52b8f5732aac6516620aea415a0b5e0b11ac1715..7d62612f2318ecd531c74e41e0d2551a95287349 100644
--- a/athenasub/src/athenatime.cpp
+++ b/athenasub/src/athenatime.cpp
@@ -178,7 +178,9 @@ void Time::ParseString(const String &data)
 
 		// Got a digit
 		else if (cur != ' ') {
-			if (cur < '0' || cur > '9') THROW_ATHENA_EXCEPTION(Exception::Parse_Error);
+			if (cur < '0' || cur > '9') {
+				THROW_ATHENA_EXCEPTION(Exception::Parse_Error);
+			}
 			curValue = curValue * 10 + (int)(cur-'0');
 			nDigits++;
 
diff --git a/athenasub/src/exception.cpp b/athenasub/src/exception.cpp
index 49c43dc656c95c512529b380df2413941e93489c..f23c54c12cba22c44b31209e756db7a258a1f364 100644
--- a/athenasub/src/exception.cpp
+++ b/athenasub/src/exception.cpp
@@ -40,13 +40,13 @@ using namespace Athenasub;
 ////////////////
 // Constructors
 Exception::Exception(ExceptionList _code)
-: std::exception(GetMessageChar(_code))
+: std::exception(GetMessageChar(_code).c_str())
 {
 	code = _code;
 }
 
 Exception::Exception(ExceptionList _code,const char* file,const long line)
-: std::exception(GetMessageFile(_code,file,line))
+: std::exception(GetMessageFile(_code,file,line).c_str())
 {
 	code = _code;
 }
@@ -54,21 +54,21 @@ Exception::Exception(ExceptionList _code,const char* file,const long line)
 
 //////////////////////
 // Get message string
-const char* Exception::GetMessageChar(int code)
+std::string Exception::GetMessageChar(int code)
 {
 	switch (code) {
-				case Unknown: return "Unknown.";
-				case No_Format_Handler: return "Could not find a suitable format handler.";
-				case Invalid_ActionList: return "Invalid manipulator.";
-				case Section_Already_Exists: return "The specified section already exists in this model.";
-				case Unknown_Format: return "The specified file format is unknown.";
-				case Parse_Error: return "Parse error.";
-				case Unsupported_Format_Feature: return "This feature is not supported by this format.";
-				case Invalid_Token: return "Invalid type for this token.";
-				case Out_Of_Range: return "Out of range.";
-				case Invalid_Section: return "Invalid section.";
-				case Internal_Error: return "Internal error.";
-				case TODO: return "TODO";
+		case Unknown: return "Unknown.";
+		case No_Format_Handler: return "Could not find a suitable format handler.";
+		case Invalid_ActionList: return "Invalid manipulator.";
+		case Section_Already_Exists: return "The specified section already exists in this model.";
+		case Unknown_Format: return "The specified file format is unknown.";
+		case Parse_Error: return "Parse error.";
+		case Unsupported_Format_Feature: return "This feature is not supported by this format.";
+		case Invalid_Token: return "Invalid type for this token.";
+		case Out_Of_Range: return "Out of range.";
+		case Invalid_Section: return "Invalid section.";
+		case Internal_Error: return "Internal error.";
+		case TODO: return "TODO";
 	}
 	return "Invalid code.";
 }
@@ -76,12 +76,12 @@ const char* Exception::GetMessageChar(int code)
 
 ///////////////////////////////////////////
 // Get the message string for the filename
-const char* Exception::GetMessageFile(int code,const char *file,long line)
+std::string Exception::GetMessageFile(int code,const char *file,long line)
 {
-	static std::string str = GetMessageChar(code);
+	std::string str = GetMessageChar(code);
 	str = str + " (" + file + ":";
 	char buffer[16];
 	_itoa_s(line,buffer,10);
 	str = str + buffer + ")";
-	return str.c_str();
+	return str;
 }
diff --git a/athenasub/src/formats/format_ass.cpp b/athenasub/src/formats/format_ass.cpp
index b499c9beb2fe880066174703940d822b93d35693..452489dbd57a84156e239af07ca1a8aff9bf2873 100644
--- a/athenasub/src/formats/format_ass.cpp
+++ b/athenasub/src/formats/format_ass.cpp
@@ -165,7 +165,10 @@ void FormatHandlerASS::Save(wxOutputStream &file,const String encoding)
 	size_t totalSections = GetSectionCount();
 	for (size_t i=0;i<totalSections;i++) {
 		String name = GetSectionByIndex(i)->GetName();
-		if (find(sections.begin(),sections.end(),name) != sections.end()) sections.push_back(name);
+		// If not found on the list, add to it
+		if (find(sections.begin(),sections.end(),name) == sections.end()) {
+			sections.push_back(name);
+		}
 	}
 
 	// Write sections
diff --git a/athenasub/src/model.cpp b/athenasub/src/model.cpp
index 9bba63efbe86a7e42354cf692f83f5b97b2972cc..77f73ca3123ec32263caf05991ae2489db49f8f6 100644
--- a/athenasub/src/model.cpp
+++ b/athenasub/src/model.cpp
@@ -87,10 +87,10 @@ void CModel::ProcessActionList(CActionList &_actionList,int type)
 	std::list<Action>::const_iterator cur;
 	for (cur=actions->actions.begin();cur!=actions->actions.end();cur++) {
 		// Inserts the opposite into the undo action first
-		if (actions->undoAble) undo->AddActionStart((*cur)->GetAntiAction(*this));
+		if (actions->undoAble) undo->AddActionStart((*cur)->GetAntiAction());
 		
 		// Execute the action itself
-		(*cur)->Execute(*this);
+		(*cur)->Execute();
 	}
 
 	// Insert into undo stack
@@ -163,7 +163,16 @@ void CModel::AddSection(String name)
 
 //////////////////
 // Gets a section
-Section CModel::GetSection(String name) const
+ConstSection CModel::GetSection(String name) const
+{
+	size_t len = sections.size();
+	for (size_t i=0;i<len;i++) {
+		if (sections[i]->GetName() == name) return sections[i];
+	}
+	return SectionPtr();
+}
+
+Section CModel::GetSection(String name)
 {
 	size_t len = sections.size();
 	for (size_t i=0;i<len;i++) {
@@ -175,7 +184,12 @@ Section CModel::GetSection(String name) const
 
 ////////////////////////
 // Get section by index
-Section CModel::GetSectionByIndex(size_t index) const
+ConstSection CModel::GetSectionByIndex(size_t index) const
+{
+	return sections.at(index);
+}
+
+Section CModel::GetSectionByIndex(size_t index)
 {
 	return sections.at(index);
 }
diff --git a/athenasub/src/model.h b/athenasub/src/model.h
index 79c04f9ddcc7cf87194f90110a7c99786babb76a..a742218e384535a0cd0bd8410f982122a196963f 100644
--- a/athenasub/src/model.h
+++ b/athenasub/src/model.h
@@ -82,10 +82,11 @@ namespace Athenasub {
 		void Load(wxInputStream &input,Format format=Format(),const String encoding="");
 		void Save(wxOutputStream &output,Format format=Format(),const String encoding="UTF-8");
 
-	protected:
 		void AddSection(String name);
-		Section GetSection(String name) const;
-		Section GetSectionByIndex(size_t index) const;
+		ConstSection GetSection(String name) const;
+		Section GetSection(String name);
+		ConstSection GetSectionByIndex(size_t index) const;
+		Section GetSectionByIndex(size_t index);
 		size_t GetSectionCount() const;
 
 	public:
diff --git a/athenasub/test/src/main.cpp b/athenasub/test/src/main.cpp
index 3cca7f84edcf90163761ad63d6c6066ada8eb217..3c5657e82f6d83adb8177ef963074703818f89d5 100644
--- a/athenasub/test/src/main.cpp
+++ b/athenasub/test/src/main.cpp
@@ -35,7 +35,7 @@
 
 //#define ATHENA_DLL
 #include <wx/wfstream.h>
-#include <athenasub/athenawin.h>
+#include <athenasub/athenasub.h>
 #include <iostream>
 #include <wx/stopwatch.h>
 #include "text_file_reader.h"
diff --git a/athenasub/test/test_2008.vcproj b/athenasub/test/test_2008.vcproj
index 9360f819e359f126176c666efd5b8fe74312c33a..690b9e04ff35e4582a23aaee08b53ed57e63cddb 100644
--- a/athenasub/test/test_2008.vcproj
+++ b/athenasub/test/test_2008.vcproj
@@ -192,18 +192,6 @@
 				>
 			</File>
 		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-		</Filter>
-		<Filter
-			Name="Resource Files"
-			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
-			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
-			>
-		</Filter>
 	</Files>
 	<Globals>
 	</Globals>
diff --git a/unit_test/src/athenasub/test_file.cpp b/unit_test/src/athenasub/test_file.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..6369c11c1f903ab9f5ab4b611a6e143c24b94ea0
--- /dev/null
+++ b/unit_test/src/athenasub/test_file.cpp
@@ -0,0 +1,102 @@
+// Copyright (c) 2008, Rodrigo Braz Monteiro
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+//   * Redistributions of source code must retain the above copyright notice,
+//     this list of conditions and the following disclaimer.
+//   * Redistributions in binary form must reproduce the above copyright notice,
+//     this list of conditions and the following disclaimer in the documentation
+//     and/or other materials provided with the distribution.
+//   * Neither the name of the Aegisub Group nor the names of its contributors
+//     may be used to endorse or promote products derived from this software
+//     without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+// POSSIBILITY OF SUCH DAMAGE.
+//
+// -----------------------------------------------------------------------------
+//
+// AEGISUB
+//
+// Website: http://aegisub.cellosoft.com
+// Contact: mailto:zeratul@cellosoft.com
+//
+
+#include "../suites.h"
+#include "../utils.h"
+#if ATHENASUB_TEST == 1
+
+#include <iostream>
+#include <cppunit/TestFixture.h>
+#include <cppunit/extensions/HelperMacros.h>
+#include "../../../athenasub/include/athenasub/athenasub.h"
+using namespace Athenasub;
+
+
+class AthenasubFileTest : public CppUnit::TestFixture {
+	CPPUNIT_TEST_SUITE(AthenasubFileTest);
+	CPPUNIT_TEST(testLoad);
+	CPPUNIT_TEST(testSave);
+	CPPUNIT_TEST(testStableRewrite);
+	CPPUNIT_TEST_SUITE_END();
+
+private:
+	LibAthenaSub lib;
+	String fileFolder;
+
+public:
+	void setUp()
+	{
+		fileFolder = "test_files/";
+		lib = Athenasub::Create("AthenasubTest");
+	}
+
+	void tearDown()
+	{
+	}
+
+	void testLoad()
+	{
+		Model subs = lib->CreateModel();
+		Controller controller = subs->CreateController();
+		CPPUNIT_ASSERT_NO_THROW(controller->LoadFile(fileFolder+"in_test1.ass","UTF-8"));
+		ConstModel csubs = subs;
+		CPPUNIT_ASSERT(csubs->GetSectionCount() == 3);
+		ConstSection section;
+		CPPUNIT_ASSERT_NO_THROW(section = csubs->GetSection("Script Info"));
+		CPPUNIT_ASSERT(section->HasProperty("ScriptType"));
+		CPPUNIT_ASSERT(section->GetProperty("ScriptType") == "v4.00+");
+	}
+
+	void testSave()
+	{
+		Model subs = lib->CreateModel();
+		Controller controller = subs->CreateController();
+		controller->LoadFile(fileFolder+"in_test1.ass","UTF-8");
+		CPPUNIT_ASSERT_NO_THROW(controller->SaveFile(fileFolder+"out_test1.ass","UTF-8"));
+	}
+
+	void testStableRewrite()
+	{
+		Model subs = lib->CreateModel();
+		Controller controller = subs->CreateController();
+		controller->LoadFile(fileFolder+"out_test1.ass","UTF-8");
+		CPPUNIT_ASSERT_NO_THROW(controller->SaveFile(fileFolder+"out_test2.ass","UTF-8"));
+		CPPUNIT_ASSERT(AreFilesIdentical(fileFolder+"out_test1.ass",fileFolder+"out_test2.ass"));
+	}
+};
+
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(AthenasubFileTest,AegisubSuites::athenasub());
+
+#endif
diff --git a/unit_test/src/athenasub/test_string.cpp b/unit_test/src/athenasub/test_string.cpp
index c5a4617887bada7eef9eb8cedc598860e9f90080..9f9a3eb57d3c2ef477232f142a0e39e74008c55f 100644
--- a/unit_test/src/athenasub/test_string.cpp
+++ b/unit_test/src/athenasub/test_string.cpp
@@ -46,6 +46,7 @@ using namespace Athenasub;
 class AthenasubStringTest : public CppUnit::TestFixture {
 	CPPUNIT_TEST_SUITE(AthenasubStringTest);
 	CPPUNIT_TEST(testComparison);
+	CPPUNIT_TEST(testStartEnd);
 	CPPUNIT_TEST(testConcatenation);
 	CPPUNIT_TEST(testConversion);
 	CPPUNIT_TEST_SUITE_END();
@@ -83,6 +84,18 @@ public:
 		CPPUNIT_ASSERT((c < d) == false);
 	}
 
+	void testStartEnd()
+	{
+		String a = "Hello world!";
+
+		CPPUNIT_ASSERT(a.StartsWith("Hello"));
+		CPPUNIT_ASSERT(a.StartsWith("hello") == false);
+		CPPUNIT_ASSERT(a.StartsWith("hello",false));
+		CPPUNIT_ASSERT(a.EndsWith("world!"));
+		CPPUNIT_ASSERT(a.EndsWith("World!") == false);
+		CPPUNIT_ASSERT(a.EndsWith("world!",false));
+	}
+
 	void testConcatenation()
 	{
 		String a;
diff --git a/unit_test/src/utils.cpp b/unit_test/src/utils.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..253bce69cafefa8a104e228cd26ef2e87f50c699
--- /dev/null
+++ b/unit_test/src/utils.cpp
@@ -0,0 +1,46 @@
+// Copyright (c) 2008, Rodrigo Braz Monteiro
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+//   * Redistributions of source code must retain the above copyright notice,
+//     this list of conditions and the following disclaimer.
+//   * Redistributions in binary form must reproduce the above copyright notice,
+//     this list of conditions and the following disclaimer in the documentation
+//     and/or other materials provided with the distribution.
+//   * Neither the name of the Aegisub Group nor the names of its contributors
+//     may be used to endorse or promote products derived from this software
+//     without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+// POSSIBILITY OF SUCH DAMAGE.
+//
+// -----------------------------------------------------------------------------
+//
+// AEGISUB
+//
+// Website: http://aegisub.cellosoft.com
+// Contact: mailto:zeratul@cellosoft.com
+//
+
+#include "utils.h"
+
+
+bool AreFilesIdentical(std::string file1, std::string file2)
+{
+	return GetFileMD5(file1) == GetFileMD5(file2);
+}
+
+std::string GetFileMD5(std::string file) {
+	return "";
+}
diff --git a/unit_test/src/utils.h b/unit_test/src/utils.h
new file mode 100644
index 0000000000000000000000000000000000000000..afec27d7792bf91e69d0470594e3c7ae672847b6
--- /dev/null
+++ b/unit_test/src/utils.h
@@ -0,0 +1,39 @@
+// Copyright (c) 2008, Rodrigo Braz Monteiro
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+//   * Redistributions of source code must retain the above copyright notice,
+//     this list of conditions and the following disclaimer.
+//   * Redistributions in binary form must reproduce the above copyright notice,
+//     this list of conditions and the following disclaimer in the documentation
+//     and/or other materials provided with the distribution.
+//   * Neither the name of the Aegisub Group nor the names of its contributors
+//     may be used to endorse or promote products derived from this software
+//     without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+// POSSIBILITY OF SUCH DAMAGE.
+//
+// -----------------------------------------------------------------------------
+//
+// AEGISUB
+//
+// Website: http://aegisub.cellosoft.com
+// Contact: mailto:zeratul@cellosoft.com
+//
+
+#include <string>
+
+bool AreFilesIdentical(std::string file1, std::string file2);
+std::string GetFileMD5(std::string file);
diff --git a/unit_test/test_files/in_test1.ass b/unit_test/test_files/in_test1.ass
new file mode 100644
index 0000000000000000000000000000000000000000..d831ede7ad4e5d8c6b5f55b7904df9442ca7fd12
--- /dev/null
+++ b/unit_test/test_files/in_test1.ass
@@ -0,0 +1,389 @@
+[Script Info]
+; Script generated by Aegisub v2.00 PRE-RELEASE (SVN r886, ArchMageZeratuL)
+; http://www.aegisub.net
+Title: <untitled>
+Original Script: <unknown>
+ScriptType: v4.00+
+Video Aspect Ratio: 0
+Video Zoom: 8
+Video Position: 11067
+Last Style Storage: evangelion
+PlayResX: 704
+PlayResY: 480
+Video File: ..\Shin.Seiki.Evangelion.[KAA].DVD.(h.264-AC3).[05B4E07C]_RC1.mkv
+Audio File: ..\Shin.Seiki.Evangelion.[KAA].DVD.(h.264-AC3).[05B4E07C]_RC1_Track2.ac3
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
+Style: eva main,Sui Generis,27,&H00F1E4D3,&H0000FFFF,&H008E4830,&H00000000,0,0,0,0,100,100,0,0,1,2,1,2,18,18,17,0
+Style: eva alternate,Sui Generis,27,&H00C4A377,&H0000FFFF,&H008E4830,&H00000000,0,0,0,0,100,100,0,0,1,2,1,2,18,18,17,0
+Style: eva bg broadcast,Sui Generis,24,&H00C1C1C1,&H0000FFFF,&H008E3230,&H00000000,0,0,0,0,100,100,0,0,1,2,1,8,18,18,17,0
+Style: eva broadcast,Sui Generis,27,&H00C1C1C1,&H0000FFFF,&H008E3230,&H00000000,0,0,0,0,100,100,0,0,1,2,1,2,18,18,17,0
+Style: eva notes,Tw Cen MT,28,&H00FFFFFF,&H0000FFFF,&H00D2D2D2,&H00000000,0,0,0,0,100,100,0,0,1,0,0,9,18,18,17,0
+Style: eva other fo,Lucida Sans,20,&H00FFFFFF,&H0000FFFF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,0,0,2,10,10,10,0
+Style: eva titles,Angsana New,80,&H00FFFFFF,&H0000FFFF,&H00000000,&H00000000,-1,0,0,0,100,100,0,0,1,0,0,2,10,10,10,0
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: 0,0:01:30.40,0:01:32.73,eva titles,Comment,0000,0000,0000,,{\fsp-3\pos(352,345)}The year is 2015 A.D.
+Dialogue: 0,0:01:55.10,0:01:59.03,eva broadcast,Comment,0000,0000,0000,,As of 12:30 PM today, a special state\nof emergency has been declared
+Dialogue: 0,0:01:59.13,0:02:03.26,eva broadcast,Comment,0000,0000,0000,,for the Kanto and Chubu regions\nsurrounding the Tokai district.
+Dialogue: 0,0:02:03.77,0:02:07.80,eva broadcast,Comment,0000,0000,0000,,All residents must evacuate to their\ndesignated shelters immediately.
+Dialogue: 0,0:02:08.24,0:02:12.55,eva broadcast,Comment,0000,0000,0000,,Repeating: As of 12:30 PM today,
+Dialogue: 0,0:02:11.65,0:02:14.07,eva other fo,Comment,0000,0000,0000,,{\pos(488,124)\bord0\shad0\fs30\frz322.539\frx24\fry41}All Lines Stopped
+Dialogue: 0,0:02:12.55,0:02:16.17,eva broadcast,Comment,0000,0000,0000,,the Kanto and Chubu regions\nsurrounding the Tokai district
+Dialogue: 0,0:02:16.25,0:02:19.31,eva broadcast,Comment,0000,0000,0000,,have been declared to be under\na state of emergency.
+Dialogue: 0,0:02:19.39,0:02:20.92,eva broadcast,Comment,0000,0000,0000,,All residents must evacuate...
+Dialogue: 0,0:02:20.92,0:02:24.39,eva main,Comment,0000,0000,0000,,Why did I have to lose sight of him now?
+Dialogue: 0,0:02:24.39,0:02:26.23,eva main,Comment,0000,0000,0000,,Oh, man!
+Dialogue: 0,0:02:26.11,0:02:28.75,eva other fo,Comment,0000,0000,0000,,{\c&H071413&\bord0\shad0\pos(154,432)\frz-5\fs22}Ikari Shinji
+Dialogue: 0,0:02:27.26,0:02:29.96,eva main,Comment,0000,0000,0000,,Due to the special emergency,
+Dialogue: 0,0:02:30.03,0:02:33.30,eva main,Comment,0000,0000,0000,,all lines are currently unavailable.
+Dialogue: 0,0:02:34.74,0:02:35.73,eva main,Comment,0000,0000,0000,,It's no use.
+Dialogue: 0,0:02:36.77,0:02:39.07,eva main,Comment,0000,0000,0000,,I shouldn't have come here after all.
+Dialogue: 0,0:02:42.84,0:02:45.26,eva main,Comment,0000,0000,0000,,{\fnhomework normal\fs40\shad0\bord1\3a&H80&\c&H21150C&\frz10\3c&HFFFFFF&\4c&HFFFFFF&\pos(160,179)}To Shinji-kun
+Dialogue: 0,0:02:42.84,0:02:45.26,eva main,Comment,0000,0000,0000,,{\fnhomework normal\fs40\shad0\bord1\3a&H80&\c&H21150C&\frz10\3c&HFFFFFF&\4c&HFFFFFF&\pos(592,123)}I'll be coming to\N\Nget you, so wait
+Dialogue: 0,0:02:42.84,0:02:45.26,eva main,Comment,0000,0000,0000,,{\fnhomework normal\fs40\shad0\bord1\3a&H80&\c&H21150C&\frz10\3c&HFFFFFF&\4c&HFFFFFF&\pos(211,250)}Attention here!!
+Dialogue: 0,0:02:42.84,0:02:45.26,eva main,Comment,0000,0000,0000,,{\fnhomework normal\fs40\shad0\bord1\3a&H80&\c&H21150C&\frz10\3c&HFFFFFF&\4c&HFFFFFF&\pos(628,197)}for me.{\fnWebdings}♥
+Dialogue: 0,0:02:43.38,0:02:45.74,eva main,Comment,0000,0000,0000,,Well, I guess we won't be meeting here.
+Dialogue: 0,0:02:46.88,0:02:49.48,eva main,Comment,0000,0000,0000,,Can't be helped. I'll go to a shelter.
+Dialogue: 0,0:03:14.63,0:03:18.55,eva titles,Comment,0000,0000,0000,,{\fs21\fsp-1\bord0\shad0\c&HE3EDFC&\fnTw Cen MT\pos(612,415)}ESTIMATED PATH
+Dialogue: 0,0:03:15.14,0:03:18.60,eva main,Comment,0000,0000,0000,,The unidentified mobile object is still\nadvancing on our position.
+Dialogue: 0,0:03:19.38,0:03:22.61,eva main,Comment,0000,0000,0000,,We've got visual confirmation.\NI'm putting it on the main screen.
+Dialogue: 0,0:03:24.29,0:03:26.12,eva main,Comment,0000,0000,0000,,It's been fifteen years, hasn't it?
+Dialogue: 0,0:03:26.19,0:03:28.31,eva main,Comment,0000,0000,0000,,Yes, there's no doubt.
+Dialogue: 0,0:03:29.29,0:03:30.52,eva main,Comment,0000,0000,0000,,It's an Angel.
+Dialogue: 0,0:03:30.52,0:03:33.19,eva titles,Comment,0000,0000,0000,,{\pos(476,263)\fs130\fsp-6}Angel Attack
+Dialogue: 0,0:03:30.52,0:03:33.19,eva titles,Comment,0000,0000,0000,,{\fsp-3\pos(193,61)}Episode One
+Dialogue: 0,0:03:42.50,0:03:44.34,eva broadcast,Comment,0000,0000,0000,,Every missile hit the target!
+Dialogue: 0,0:04:03.53,0:04:05.12,eva main,Comment,0000,0000,0000,,I'm sorry! Thanks for waiting!
+Dialogue: 0,0:04:22.11,0:04:26.71,eva broadcast,Comment,0000,0000,0000,,The target is still operational.\NIt's still heading towards New Tokyo-3.
+Dialogue: 0,0:04:26.78,0:04:29.31,eva broadcast,Comment,0000,0000,0000,,The Air Defense Force doesn't have\nthe firepower to stop it!
+Dialogue: 0,0:04:30.12,0:04:31.29,eva main,Comment,0000,0000,0000,,Hit it with everything we've got!
+Dialogue: 0,0:04:31.29,0:04:33.25,eva main,Comment,0000,0000,0000,,Mobilize all of Atsugi and Iruma as well!
+Dialogue: 0,0:04:33.32,0:04:36.72,eva main,Comment,0000,0000,0000,,Don't hold anything back!\NDestroy the target at any cost!
+Dialogue: 0,0:04:50.05,0:04:52.17,eva main,Comment,0000,0000,0000,,Why?! That was a direct hit!
+Dialogue: 0,0:04:52.64,0:04:55.04,eva main,Comment,0000,0000,0000,,The tank battalion's been annihilated.
+Dialogue: 0,0:04:55.04,0:04:57.98,eva main,Comment,0000,0000,0000,,Guided missiles and artillery\nhave no effect either.
+Dialogue: 0,0:04:57.98,0:05:01.52,eva main,Comment,0000,0000,0000,,It's no good! We'll never get anywhere\nwith the firepower we've got!
+Dialogue: 0,0:05:01.52,0:05:03.39,eva main,Comment,0000,0000,0000,,Is it an AT field after all?
+Dialogue: 0,0:05:01.52,0:05:04.52,eva notes,Comment,0000,0000,0000,,{\fad(400,400)\1a&H70&}AT field: absolute terror field
+Dialogue: 0,0:05:03.39,0:05:07.34,eva main,Comment,0000,0000,0000,,Yes. Conventional weapons are\nuseless against Angels.
+Dialogue: 0,0:05:10.76,0:05:13.99,eva main,Comment,0000,0000,0000,,I understand. We'll activate it as planned.
+Dialogue: 0,0:05:18.80,0:05:20.29,eva main,Comment,0000,0000,0000,,Hey, don't tell me...
+Dialogue: 0,0:05:20.37,0:05:22.23,eva main,Comment,0000,0000,0000,,They're going to use an N{\fnLucida Sans}²{\r} mine?!
+Dialogue: 0,0:05:22.74,0:05:23.76,eva main,Comment,0000,0000,0000,,Get down!
+Dialogue: 0,0:05:46.56,0:05:47.43,eva main,Comment,0000,0000,0000,,We did it!
+Dialogue: 0,0:05:48.80,0:05:51.89,eva main,Comment,0000,0000,0000,,Sorry, but it looks like you won't be\ngetting a shot at it.
+Dialogue: 0,0:05:51.97,0:05:54.16,eva broadcast,Comment,0000,0000,0000,,Shock wave approaching.
+Dialogue: 0,0:05:55.37,0:05:56.70,eva main,Comment,0000,0000,0000,,Are you all right?
+Dialogue: 0,0:05:56.77,0:06:00.11,eva main,Comment,0000,0000,0000,,Yeah, but my mouth is full of dirt.
+Dialogue: 0,0:06:00.11,0:06:04.07,eva main,Comment,0000,0000,0000,,That's okay. Now then, here we go!
+Dialogue: 0,0:06:04.75,0:06:06.08,eva main,Comment,0000,0000,0000,,One, two!
+Dialogue: 0,0:06:09.88,0:06:11.44,eva main,Comment,0000,0000,0000,,There.
+Dialogue: 0,0:06:14.79,0:06:16.88,eva main,Comment,0000,0000,0000,,Thanks for the hand. I really appreciate it.
+Dialogue: 0,0:06:16.96,0:06:19.95,eva main,Comment,0000,0000,0000,,Thank you too, Katsuragi-san.
+Dialogue: 0,0:06:20.03,0:06:22.09,eva main,Comment,0000,0000,0000,,Just Misato is fine.
+Dialogue: 0,0:06:22.56,0:06:25.90,eva main,Comment,0000,0000,0000,,I'm glad we've met at last, Ikari Shinji-kun.
+Dialogue: 0,0:06:26.20,0:06:27.02,eva main,Comment,0000,0000,0000,,Yeah...
+Dialogue: 0,0:06:27.57,0:06:28.83,eva broadcast,Comment,0000,0000,0000,,What's the target's status?
+Dialogue: 0,0:06:28.90,0:06:31.80,eva broadcast,Comment,0000,0000,0000,,We're unable to confirm due to\nall the EMP interference.
+Dialogue: 0,0:06:31.87,0:06:34.64,eva main,Comment,0000,0000,0000,,You saw the size of the explosion. It's over.
+Dialogue: 0,0:06:34.71,0:06:36.14,eva broadcast,Comment,0000,0000,0000,,Sensors restored.
+Dialogue: 0,0:06:37.45,0:06:39.28,eva broadcast,Comment,0000,0000,0000,,We've got an energy reading\nat the explosion's epicenter!
+Dialogue: 0,0:06:39.35,0:06:40.47,eva main,Comment,0000,0000,0000,,What the hell?!
+Dialogue: 0,0:06:40.55,0:06:42.18,eva broadcast,Comment,0000,0000,0000,,Visual display restored.
+Dialogue: 0,0:06:46.45,0:06:48.68,eva main,Comment,0000,0000,0000,,That was our last resort.
+Dialogue: 0,0:06:49.62,0:06:51.53,eva main,Comment,0000,0000,0000,,How can this be?
+Dialogue: 0,0:06:51.53,0:06:53.15,eva main,Comment,0000,0000,0000,,Damned monster!
+Dialogue: 0,0:07:03.10,0:07:05.50,eva main,Comment,0000,0000,0000,,Yes. Don't worry about it.
+Dialogue: 0,0:07:05.57,0:07:09.63,eva main,Comment,0000,0000,0000,,His safety is my top priority,\nso could you get a car train ready for us?
+Dialogue: 0,0:07:09.71,0:07:10.94,eva main,Comment,0000,0000,0000,,A direct one.
+Dialogue: 0,0:07:11.81,0:07:12.78,eva main,Comment,0000,0000,0000,,Right.
+Dialogue: 0,0:07:13.15,0:07:15.48,eva main,Comment,0000,0000,0000,,Well, I volunteered to pick him up,
+Dialogue: 0,0:07:15.48,0:07:18.18,eva main,Comment,0000,0000,0000,,so I'll make sure he gets there. See ya!
+Dialogue: 0,0:07:20.52,0:07:26.95,eva main,Comment,0000,0000,0000,,Man, this sucks! I just had my car restored\nand it's a total wreck already!
+Dialogue: 0,0:07:27.44,0:07:30.56,eva main,Comment,0000,0000,0000,,33 more loan payments to go,\nplus the cost of repairs.
+Dialogue: 0,0:07:30.63,0:07:33.16,eva main,Comment,0000,0000,0000,,And look! My best dress has been ruined!
+Dialogue: 0,0:07:33.54,0:07:37.30,eva main,Comment,0000,0000,0000,,And I was looking and feeling so nice.
+Dialogue: 0,0:07:32.97,0:07:34.79,eva alternate,Comment,0000,0000,0000,,Excuse me, Misato-san?
+Dialogue: 0,0:07:37.30,0:07:38.98,eva main,Comment,0000,0000,0000,,Excuse me, Misato-san?
+Dialogue: 0,0:07:39.17,0:07:40.66,eva main,Comment,0000,0000,0000,,What?
+Dialogue: 0,0:07:40.74,0:07:43.40,eva main,Comment,0000,0000,0000,,Are you sure you can just take those?
+Dialogue: 0,0:07:45.25,0:07:46.21,eva main,Comment,0000,0000,0000,,Never mind about that!
+Dialogue: 0,0:07:46.28,0:07:50.05,eva main,Comment,0000,0000,0000,,It's an emergency, and we need\na working car right now, right?
+Dialogue: 0,0:07:50.12,0:07:53.61,eva main,Comment,0000,0000,0000,,And I'm an international government\nofficial, after all,
+Dialogue: 0,0:07:53.69,0:07:55.28,eva main,Comment,0000,0000,0000,,so everything's going to be\nperfectly fine, okay?
+Dialogue: 0,0:07:56.66,0:07:59.29,eva main,Comment,0000,0000,0000,,I don't think anyone will buy that.
+Dialogue: 0,0:07:59.36,0:08:03.46,eva main,Comment,0000,0000,0000,,You're no fun. You look cute,\nbut you're kind of a cold fish.
+Dialogue: 0,0:08:04.40,0:08:05.73,eva main,Comment,0000,0000,0000,,You think so?
+Dialogue: 0,0:08:05.80,0:08:07.53,eva main,Comment,0000,0000,0000,,Oh, did I upset you?
+Dialogue: 0,0:08:08.27,0:08:11.67,eva main,Comment,0000,0000,0000,,Sorry about that! You are a boy, after all.
+Dialogue: 0,0:08:11.74,0:08:15.04,eva main,Comment,0000,0000,0000,,And you're pretty childish for your age.
+Dialogue: 0,0:08:20.75,0:08:23.68,eva main,Comment,0000,0000,0000,,As we predicted, it's regenerating itself.
+Dialogue: 0,0:08:23.99,0:08:27.85,eva main,Comment,0000,0000,0000,,If it couldn't, it wouldn't be\na practical autonomous weapon.
+Dialogue: 0,0:08:31.49,0:08:35.09,eva main,Comment,0000,0000,0000,,Impressive. It appears it can even upgrade\nits own operational functions.
+Dialogue: 0,0:08:35.43,0:08:37.69,eva main,Comment,0000,0000,0000,,And it seems to have gotten smarter.
+Dialogue: 0,0:08:38.73,0:08:41.63,eva main,Comment,0000,0000,0000,,It's only a matter of time before\nit resumes attacking.
+Dialogue: 0,0:08:43.04,0:08:46.61,eva bg broadcast,Comment,0000,0000,0000,,The gates are now closing.\NPlease stand clear.
+Dialogue: 0,0:08:46.30,0:08:48.03,eva main,,0000,0000,0000,,The special duty organization Nerv?
+Dialogue: 0,0:08:46.61,0:08:48.34,eva bg broadcast,Comment,0000,0000,0000,,Now departing.
+Dialogue: 0,0:08:48.14,0:08:51.45,eva main,Comment,0000,0000,0000,,Yes, it's a secret organization under\nthe control of the United Nations.
+Dialogue: 0,0:08:48.34,0:08:56.75,eva bg broadcast,Comment,0000,0000,0000,,This is the C-22 Special Express\ndeparting directly for G33-1.
+Dialogue: 0,0:08:51.95,0:08:53.58,eva main,Comment,0000,0000,0000,,That's where my father is, right?
+Dialogue: 0,0:08:53.58,0:08:54.75,eva main,Comment,0000,0000,0000,,Well, yeah.
+Dialogue: 0,0:08:54.75,0:08:56.75,eva main,Comment,0000,0000,0000,,Do you know what he does?
+Dialogue: 0,0:08:58.09,0:09:01.92,eva bg broadcast,Comment,0000,0000,0000,,This train will bypass all other stations.\NPlease stand back.
+Dialogue: 0,0:09:00.69,0:09:04.52,eva main,Comment,0000,0000,0000,,My teacher told me his work is vital\nfor the protection of the human race.
+Dialogue: 0,0:09:07.66,0:09:10.83,eva main,Comment,0000,0000,0000,,From this point forward, command of this\noperation will be entrusted to you.
+Dialogue: 0,0:09:10.90,0:09:12.53,eva main,Comment,0000,0000,0000,,Show us what you're capable of.
+Dialogue: 0,0:09:12.60,0:09:13.69,eva main,Comment,0000,0000,0000,,Yes, Sir.
+Dialogue: 0,0:09:14.27,0:09:20.37,eva main,Comment,0000,0000,0000,,Ikari-kun, we will admit that our weapons\nhave no effect on the target.
+Dialogue: 0,0:09:21.28,0:09:23.68,eva main,Comment,0000,0000,0000,,But are you sure you can beat this thing?
+Dialogue: 0,0:09:24.15,0:09:25.83,eva main,Comment,0000,0000,0000,,It's what Nerv was created for.
+Dialogue: 0,0:09:26.65,0:09:28.14,eva main,Comment,0000,0000,0000,,Let's hope you're correct.
+Dialogue: 0,0:09:29.78,0:09:31.91,eva broadcast,Comment,0000,0000,0000,,The target is still stationary.
+Dialogue: 0,0:09:31.99,0:09:35.35,eva broadcast,Comment,0000,0000,0000,,Our intercept system is currently\N7.5% operational.
+Dialogue: 0,0:09:37.03,0:09:39.36,eva main,Comment,0000,0000,0000,,So, even the UN forces have retired.
+Dialogue: 0,0:09:39.43,0:09:41.02,eva main,Comment,0000,0000,0000,,What are you going to do?
+Dialogue: 0,0:09:41.53,0:09:43.52,eva main,Comment,0000,0000,0000,,I intend to activate Unit 01.
+Dialogue: 0,0:09:43.77,0:09:46.86,eva main,Comment,0000,0000,0000,,Unit 01? But we have no pilot.
+Dialogue: 0,0:09:47.50,0:09:51.10,eva main,Comment,0000,0000,0000,,That's not a problem. Another spare\nwill be delivered soon.
+Dialogue: 0,0:09:52.07,0:09:54.80,eva main,Comment,0000,0000,0000,,Are you taking me to my father?
+Dialogue: 0,0:09:55.31,0:09:57.40,eva main,Comment,0000,0000,0000,,Yes. Pretty much.
+Dialogue: 0,0:10:01.25,0:10:02.51,eva main,Comment,0000,0000,0000,,Father...
+Dialogue: 0,0:10:04.09,0:10:07.45,eva main,Comment,0000,0000,0000,,Oh, that's right. Did you get\nan ID card from your father?
+Dialogue: 0,0:10:09.36,0:10:10.35,eva main,Comment,0000,0000,0000,,Yes.
+Dialogue: 0,0:10:12.03,0:10:13.05,eva main,Comment,0000,0000,0000,,Here it is.
+Dialogue: 0,0:10:13.13,0:10:14.43,eva main,Comment,0000,0000,0000,,Thanks.
+Dialogue: 0,0:10:13.88,0:10:15.09,eva main,Comment,0000,0000,0000,,{\fnParla\fs35\b1\c&H293132&\frz9.564\bord2\shad0\3c&HBECAC1&\3a&H80&\pos(420,396)}Come.
+Dialogue: 0,0:10:13.88,0:10:15.09,eva main,Comment,0000,0000,0000,,{\fnParla\b1\c&H293132&\frz9.564\bord2\shad0\3c&HBECAC1&\3a&H80&\pos(485,459)}Ikari Gendo
+Dialogue: 0,0:10:15.80,0:10:18.20,eva main,Comment,0000,0000,0000,,Then read this.
+Dialogue: 0,0:10:18.09,0:10:19.76,eva titles,Comment,0000,0000,0000,,{\frz2.561\bord0\shad0\c&H03100B&\pos(380,320)}Welcome to
+Dialogue: 0,0:10:18.09,0:10:19.76,eva titles,Comment,0000,0000,0000,,{\frz2.561\bord0\shad0\c&H03100B&\i1\pos(380,353)}Nerv
+Dialogue: 0,0:10:18.93,0:10:20.13,eva main,Comment,0000,0000,0000,,Nerv...
+Dialogue: 0,0:10:21.00,0:10:22.26,eva main,Comment,0000,0000,0000,,My father's agency.
+Dialogue: 0,0:10:23.00,0:10:25.06,eva main,Comment,0000,0000,0000,,Am I going to work for them too?
+Dialogue: 0,0:10:27.01,0:10:28.50,eva main,Comment,0000,0000,0000,,Of course.
+Dialogue: 0,0:10:28.68,0:10:32.81,eva main,Comment,0000,0000,0000,,He wouldn't have sent me a letter unless\nhe needed me for something.
+Dialogue: 0,0:10:33.27,0:10:36.24,eva main,Comment,0000,0000,0000,,I see. So you don't get along with your father.
+Dialogue: 0,0:10:37.65,0:10:39.24,eva main,Comment,0000,0000,0000,,It's the same with me.
+Dialogue: 0,0:10:45.23,0:10:46.49,eva main,Comment,0000,0000,0000,,Awesome!
+Dialogue: 0,0:10:47.70,0:10:49.39,eva main,Comment,0000,0000,0000,,It's the real Geo-Front!
+Dialogue: 0,0:10:49.46,0:10:50.36,eva main,Comment,0000,0000,0000,,That's right.
+Dialogue: 0,0:10:50.43,0:10:53.87,eva main,Comment,0000,0000,0000,,This is our secret base.\NNerv Headquarters.
+Dialogue: 0,0:10:54.26,0:10:55.80,eva main,Comment,0000,0000,0000,,This is the key to rebuilding our world.
+Dialogue: 0,0:10:55.87,0:10:58.34,eva main,Comment,0000,0000,0000,,A fortress for all mankind.
+Dialogue: 1,0:11:04.91,0:11:10.18,eva main,Comment,0000,0000,0000,,That's strange. Isn't this the right way?
+Dialogue: 0,0:11:07.10,0:11:08.64,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\i1\c&H15180D&\pos(132,90)}Nerv{\i0} Headquarters
+Dialogue: 0,0:11:07.10,0:11:08.64,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\c&H15180D&\pos(123,143)}Central Dogma
+Dialogue: 0,0:11:07.10,0:11:08.64,eva main,Comment,0000,0000,0000,,{\fnOne Stroke Script LET\frz21.148\pos(273,118)\bord0\shad0\c&H3B2C71&}Around here
+Dialogue: 0,0:11:08.60,0:11:08.64,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\i1\c&H15180D&\pos(132,90)}Nerv{\i0} Headquarters
+Dialogue: 0,0:11:08.64,0:11:08.68,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\i1\c&H15180D&\pos(132,99)}Nerv{\i0} Headquarters
+Dialogue: 0,0:11:08.68,0:11:08.73,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\i1\c&H15180D&\pos(132,109)}Nerv{\i0} Headquarters
+Dialogue: 0,0:11:08.73,0:11:08.77,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\i1\c&H15180D&\pos(132,125)}Nerv{\i0} Headquarters
+Dialogue: 0,0:11:08.77,0:11:08.81,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\i1\c&H15180D&\pos(132,145)}Nerv{\i0} Headquarters
+Dialogue: 0,0:11:08.81,0:11:08.85,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\i1\c&H15180D&\pos(132,186)}Nerv{\i0} Headquarters
+Dialogue: 0,0:11:08.85,0:11:08.89,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\i1\c&H15180D&\pos(132,235)}Nerv{\i0} Headquarters
+Dialogue: 0,0:11:08.89,0:11:08.93,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\i1\c&H15180D&\pos(132,285)}Nerv{\i0} Headquarters
+Dialogue: 0,0:11:08.93,0:11:08.98,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\i1\c&H15180D&\pos(132,333)}Nerv{\i0} Headquarters
+Dialogue: 0,0:11:08.98,0:11:09.02,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\i1\c&H15180D&\pos(132,394)}Nerv{\i0} Headquarters
+Dialogue: 0,0:11:09.02,0:11:09.06,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\i1\c&H15180D&\pos(132,457)}Nerv{\i0} Headquarters
+Dialogue: 0,0:11:08.60,0:11:08.64,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\c&H15180D&\pos(123,143)}Central Dogma
+Dialogue: 0,0:11:08.64,0:11:08.68,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\c&H15180D&\pos(123,152)}Central Dogma
+Dialogue: 0,0:11:08.68,0:11:08.73,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\c&H15180D&\pos(123,162)}Central Dogma
+Dialogue: 0,0:11:08.73,0:11:08.77,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\c&H15180D&\pos(123,178)}Central Dogma
+Dialogue: 0,0:11:08.77,0:11:08.81,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\c&H15180D&\pos(123,198)}Central Dogma
+Dialogue: 0,0:11:08.81,0:11:08.85,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\c&H15180D&\pos(123,240)}Central Dogma
+Dialogue: 0,0:11:08.85,0:11:08.89,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\c&H15180D&\pos(123,287)}Central Dogma
+Dialogue: 0,0:11:08.89,0:11:08.93,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\c&H15180D&\pos(123,339)}Central Dogma
+Dialogue: 0,0:11:08.93,0:11:08.98,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\c&H15180D&\pos(123,384)}Central Dogma
+Dialogue: 0,0:11:08.98,0:11:09.02,eva other fo,Comment,0000,0000,0000,,{\fnAngsana New\fs30\c&H15180D&\pos(123,447)}Central Dogma
+Dialogue: 0,0:11:08.64,0:11:08.68,eva main,Comment,0000,0000,0000,,{\fnOne Stroke Script LET\frz21.148\bord0\shad0\c&H3B2C71&\pos(275,128)}Around here
+Dialogue: 0,0:11:08.68,0:11:08.73,eva main,Comment,0000,0000,0000,,{\fnOne Stroke Script LET\frz21.148\bord0\shad0\c&H3B2C71&\pos(275,138)}Around here
+Dialogue: 0,0:11:08.73,0:11:08.77,eva main,Comment,0000,0000,0000,,{\fnOne Stroke Script LET\frz21.148\bord0\shad0\c&H3B2C71&\pos(275,154)}Around here
+Dialogue: 0,0:11:08.77,0:11:08.81,eva main,Comment,0000,0000,0000,,{\fnOne Stroke Script LET\frz21.148\bord0\shad0\c&H3B2C71&\pos(275,171)}Around here
+Dialogue: 0,0:11:08.81,0:11:08.85,eva main,Comment,0000,0000,0000,,{\fnOne Stroke Script LET\frz21.148\bord0\shad0\c&H3B2C71&\pos(275,213)}Around here
+Dialogue: 0,0:11:08.85,0:11:08.89,eva main,Comment,0000,0000,0000,,{\fnOne Stroke Script LET\frz21.148\bord0\shad0\c&H3B2C71&\pos(275,262)}Around here
+Dialogue: 0,0:11:08.89,0:11:08.93,eva main,Comment,0000,0000,0000,,{\fnOne Stroke Script LET\frz21.148\bord0\shad0\c&H3B2C71&\pos(276,312)}Around here
+Dialogue: 0,0:11:08.93,0:11:08.98,eva main,Comment,0000,0000,0000,,{\fnOne Stroke Script LET\frz21.148\bord0\shad0\c&H3B2C71&\pos(275,358)}Around here
+Dialogue: 0,0:11:08.98,0:11:09.02,eva main,Comment,0000,0000,0000,,{\fnOne Stroke Script LET\frz21.148\bord0\shad0\c&H3B2C71&\pos(273,420)}Around here
+Dialogue: 0,0:11:09.02,0:11:09.06,eva main,Comment,0000,0000,0000,,{\fnOne Stroke Script LET\frz21.148\bord0\shad0\c&H3B2C71&\pos(281,480)}Around here
+Dialogue: 0,0:11:10.89,0:11:12.49,eva bg broadcast,Comment,0000,0000,0000,,Central Dogma's closed passages\nremain sealed.
+Dialogue: 0,0:11:12.49,0:11:15.29,eva main,Comment,0000,0000,0000,,This is why I hate wearing skirts here.
+Dialogue: 0,0:11:12.92,0:11:17.76,eva bg broadcast,Comment,0000,0000,0000,,Opening block B-26 in sequence.
+Dialogue: 0,0:11:15.79,0:11:18.56,eva main,Comment,0000,0000,0000,,But where the heck did Ritsuko go?
+Dialogue: 0,0:11:18.63,0:11:21.42,eva main,Comment,0000,0000,0000,,I'm sorry. I'm just not used to this place yet.
+Dialogue: 0,0:11:21.50,0:11:23.49,eva main,Comment,0000,0000,0000,,We passed this spot just a little while ago.
+Dialogue: 0,0:11:24.87,0:11:26.30,eva main,Comment,0000,0000,0000,,But don't worry about it.
+Dialogue: 0,0:11:26.37,0:11:29.24,eva main,Comment,0000,0000,0000,,They make these systems\nto be used, you know.
+Dialogue: 0,0:11:29.24,0:11:31.97,eva bg broadcast,Comment,0000,0000,0000,,Would the head of Project E,\NTechnical Department Division 1,
+Dialogue: 0,0:11:31.97,0:11:34.84,eva bg broadcast,Comment,0000,0000,0000,,Dr. Akagi Ritsuko, Dr. Akagi Ritsuko,
+Dialogue: 0,0:11:34.84,0:11:39.48,eva bg broadcast,Comment,0000,0000,0000,,please contact Captain Katsuragi Misato\nof Operations, Division 1, immediately.
+Dialogue: 0,0:11:39.61,0:11:41.45,eva main,Comment,0000,0000,0000,,I don't believe it.
+Dialogue: 0,0:11:41.45,0:11:42.42,eva main,Comment,0000,0000,0000,,She got lost again, didn't she?
+Dialogue: 0,0:11:46.89,0:11:48.95,eva main,Comment,0000,0000,0000,,Uh, hiya, Ritsuko.
+Dialogue: 0,0:11:53.63,0:11:55.99,eva main,Comment,0000,0000,0000,,What were you doing, Captain Katsuragi?
+Dialogue: 0,0:11:56.10,0:11:58.33,eva main,Comment,0000,0000,0000,,We're short on both time\nand manpower, you know.
+Dialogue: 0,0:11:58.83,0:11:59.86,eva main,Comment,0000,0000,0000,,Sorry!
+Dialogue: 0,0:12:03.14,0:12:04.97,eva main,Comment,0000,0000,0000,,So this is the boy?
+Dialogue: 0,0:12:05.04,0:12:08.98,eva main,Comment,0000,0000,0000,,Right. According to the Marduk report,\nhe's the "Third Child".
+Dialogue: 0,0:12:09.68,0:12:10.77,eva main,Comment,0000,0000,0000,,I'm glad to meet you.
+Dialogue: 0,0:12:10.85,0:12:12.68,eva main,Comment,0000,0000,0000,,Huh? Sure.
+Dialogue: 0,0:12:13.00,0:12:17.88,eva main,Comment,0000,0000,0000,,He's just like his father.\NLike how he's unendearing.
+Dialogue: 0,0:12:18.25,0:12:19.51,eva main,Comment,0000,0000,0000,,I'll leave the rest to you.
+Dialogue: 0,0:12:23.96,0:12:26.19,eva main,Comment,0000,0000,0000,,Their first meeting in over three years.
+Dialogue: 0,0:12:27.23,0:12:30.89,eva main,Comment,0000,0000,0000,,Vice Commander, the target\nhas started moving again.
+Dialogue: 0,0:12:30.97,0:12:34.37,eva main,Comment,0000,0000,0000,,Right. All personnel, assume\nbattle stations, Level One.
+Dialogue: 0,0:12:34.54,0:12:37.91,eva bg broadcast,Comment,0000,0000,0000,,Repeat. All personnel, assume\nbattle stations, Level One.
+Dialogue: 0,0:12:37.91,0:12:39.30,eva bg broadcast,Comment,0000,0000,0000,,Prepare for ground-unit interception.
+Dialogue: 0,0:12:39.81,0:12:41.04,eva main,Comment,0000,0000,0000,,Here we go.
+Dialogue: 0,0:12:41.04,0:12:42.27,eva main,Comment,0000,0000,0000,,It sounds pretty serious.
+Dialogue: 0,0:12:43.41,0:12:45.58,eva main,Comment,0000,0000,0000,,So, how's Unit 01 doing?
+Dialogue: 0,0:12:45.58,0:12:47.95,eva main,Comment,0000,0000,0000,,It's currently in refrigeration,\nusing the B-type equipment.
+Dialogue: 0,0:12:47.95,0:12:51.95,eva main,Comment,0000,0000,0000,,Does it really work?\NIt's never worked before, right?
+Dialogue: 0,0:12:51.95,0:12:56.89,eva main,Comment,0000,0000,0000,,The possibility of activation is 0.000000001%.
+Dialogue: 0,0:12:57.49,0:12:59.99,eva main,Comment,0000,0000,0000,,We call it, pathetically enough,\nthe O-9 System.
+Dialogue: 0,0:12:59.99,0:13:02.66,eva main,Comment,0000,0000,0000,,Does that mean it doesn't work?
+Dialogue: 0,0:13:02.66,0:13:05.13,eva main,Comment,0000,0000,0000,,Oh, don't be insulting. It's not zero.
+Dialogue: 0,0:13:05.13,0:13:06.83,eva main,Comment,0000,0000,0000,,Well, it's just a number.
+Dialogue: 0,0:13:06.90,0:13:11.43,eva main,Comment,0000,0000,0000,,Anyway, it's a bit too late to be saying,\N"Sorry, it didn't work".
+Dialogue: 0,0:13:20.05,0:13:22.81,eva main,Comment,0000,0000,0000,,Huh? It's completely dark.
+Dialogue: 0,0:13:26.39,0:13:29.15,eva main,Comment,0000,0000,0000,,A face? A giant robot?
+Dialogue: 0,0:13:30.86,0:13:33.02,eva main,Comment,0000,0000,0000,,You won't find this in the manual.
+Dialogue: 0,0:13:34.16,0:13:38.13,eva main,Comment,0000,0000,0000,,This is mankind's ultimate\nmultipurpose decisive weapon,
+Dialogue: 0,0:13:38.13,0:13:42.04,eva main,Comment,0000,0000,0000,,the synthetic human Evangelion, Unit 01.
+Dialogue: 0,0:13:42.04,0:13:47.28,eva main,Comment,0000,0000,0000,,Built in absolute secrecy,\nit is mankind's trump card.
+Dialogue: 0,0:13:47.28,0:13:49.28,eva main,Comment,0000,0000,0000,,Is this part of what my father's been doing?
+Dialogue: 0,0:13:49.28,0:13:50.18,eva broadcast,Comment,0000,0000,0000,,Correct.
+Dialogue: 0,0:13:52.15,0:13:53.48,eva main,Comment,0000,0000,0000,,It's been a while.
+Dialogue: 0,0:13:54.55,0:13:55.68,eva main,Comment,0000,0000,0000,,Father...
+Dialogue: 0,0:13:58.75,0:13:59.52,eva main,Comment,0000,0000,0000,,We're moving out!
+Dialogue: 0,0:14:00.02,0:14:03.48,eva main,Comment,0000,0000,0000,,Moving out?! Unit 00's still in\ncryo-stasis, isn't it?
+Dialogue: 0,0:14:05.43,0:14:07.62,eva main,Comment,0000,0000,0000,,You're not planning to use Unit 01?!
+Dialogue: 0,0:14:08.43,0:14:09.96,eva main,Comment,0000,0000,0000,,There's no other way.
+Dialogue: 0,0:14:09.96,0:14:12.83,eva main,Comment,0000,0000,0000,,Hold on! Rei can't do it yet, can she?
+Dialogue: 0,0:14:13.77,0:14:15.17,eva main,Comment,0000,0000,0000,,We've got no pilot!
+Dialogue: 0,0:14:16.10,0:14:17.26,eva main,Comment,0000,0000,0000,,A pilot has just been delivered.
+Dialogue: 0,0:14:18.54,0:14:19.56,eva main,Comment,0000,0000,0000,,Are you serious?
+Dialogue: 0,0:14:20.54,0:14:21.61,eva main,Comment,0000,0000,0000,,Ikari Shinji-kun...
+Dialogue: 0,0:14:21.61,0:14:22.71,eva main,Comment,0000,0000,0000,,Yes?
+Dialogue: 0,0:14:22.71,0:14:23.73,eva main,Comment,0000,0000,0000,,You will pilot it.
+Dialogue: 0,0:14:24.45,0:14:29.44,eva main,Comment,0000,0000,0000,,But even Ayanami Rei took seven months\nto synchronize with her Eva.
+Dialogue: 0,0:14:29.62,0:14:32.25,eva main,Comment,0000,0000,0000,,It's impossible for him to do it!\NHe just got here!
+Dialogue: 0,0:14:32.32,0:14:35.12,eva main,Comment,0000,0000,0000,,He just has to sit in the seat.\NWe don't expect more than that.
+Dialogue: 0,0:14:35.19,0:14:36.18,eva main,Comment,0000,0000,0000,,But...
+Dialogue: 0,0:14:36.26,0:14:38.92,eva main,Comment,0000,0000,0000,,Repelling that Angel is our ultimate priority.
+Dialogue: 0,0:14:39.43,0:14:43.02,eva main,Comment,0000,0000,0000,,To do that, we have no choice but to put\naboard the Eva whomever has the chance
+Dialogue: 0,0:14:43.10,0:14:45.62,eva main,Comment,0000,0000,0000,,to synchronize with it, no matter how slight.
+Dialogue: 0,0:14:46.87,0:14:48.80,eva main,Comment,0000,0000,0000,,I believe you know that, Captain Katsuragi.
+Dialogue: 0,0:14:51.27,0:14:52.60,eva main,Comment,0000,0000,0000,,I suppose...
+Dialogue: 0,0:14:54.21,0:14:56.61,eva main,Comment,0000,0000,0000,,Father, why did you send for me?
+Dialogue: 0,0:14:56.61,0:14:58.75,eva main,Comment,0000,0000,0000,,You know exactly why.
+Dialogue: 0,0:14:58.75,0:15:02.65,eva main,Comment,0000,0000,0000,,So, you're asking me to take this thing\nand fight that thing?
+Dialogue: 0,0:15:03.35,0:15:04.35,eva main,Comment,0000,0000,0000,,That's right.
+Dialogue: 0,0:15:04.35,0:15:08.02,eva main,Comment,0000,0000,0000,,No way! Why are you doing this now?!
+Dialogue: 0,0:15:08.02,0:15:10.63,eva main,Comment,0000,0000,0000,,I thought you didn't need me!
+Dialogue: 0,0:15:10.63,0:15:12.82,eva main,Comment,0000,0000,0000,,I called you because I have a need for you.
+Dialogue: 0,0:15:15.40,0:15:16.83,eva main,Comment,0000,0000,0000,,Why me?
+Dialogue: 0,0:15:17.47,0:15:19.70,eva main,Comment,0000,0000,0000,,Because no one else can.
+Dialogue: 0,0:15:20.37,0:15:22.06,eva main,Comment,0000,0000,0000,,No, I can't...
+Dialogue: 0,0:15:22.50,0:15:26.03,eva main,Comment,0000,0000,0000,,I've never even seen anything\nlike this before! I can't do this!
+Dialogue: 0,0:15:27.01,0:15:28.41,eva main,Comment,0000,0000,0000,,You will be instructed.
+Dialogue: 0,0:15:29.04,0:15:32.88,eva main,Comment,0000,0000,0000,,But there's no way I can do this!
+Dialogue: 0,0:15:33.71,0:15:35.74,eva main,Comment,0000,0000,0000,,I can't pilot it!
+Dialogue: 0,0:15:37.22,0:15:40.24,eva main,Comment,0000,0000,0000,,If you're going to pilot it, do it now\nand quickly. If not, leave!
+Dialogue: 0,0:15:51.93,0:15:54.46,eva main,Comment,0000,0000,0000,,It must have detected our location.
+Dialogue: 0,0:15:58.11,0:16:00.04,eva main,Comment,0000,0000,0000,,Shinji-kun, we don't have time.
+Dialogue: 0,0:16:05.08,0:16:06.24,eva main,Comment,0000,0000,0000,,Get into it.
+Dialogue: 0,0:16:07.31,0:16:11.98,eva main,Comment,0000,0000,0000,,No! I didn't come for this! This isn't fair!
+Dialogue: 0,0:16:13.25,0:16:16.69,eva main,Comment,0000,0000,0000,,Shinji-kun, just why did you come here?
+Dialogue: 0,0:16:18.59,0:16:22.69,eva main,Comment,0000,0000,0000,,You mustn't run! Not from your father,\nand most of all not from yourself.
+Dialogue: 0,0:16:23.33,0:16:27.39,eva main,Comment,0000,0000,0000,,I know that! But there's no way I can do it!
+Dialogue: 0,0:16:35.54,0:16:36.53,eva main,Comment,0000,0000,0000,,Fuyutsuki...
+Dialogue: 0,0:16:37.85,0:16:39.25,eva main,Comment,0000,0000,0000,,Wake up Rei.
+Dialogue: 0,0:16:39.25,0:16:40.75,eva broadcast,Comment,0000,0000,0000,,Can we use her?
+Dialogue: 0,0:16:40.75,0:16:42.31,eva main,Comment,0000,0000,0000,,She isn't dead.
+Dialogue: 0,0:16:43.45,0:16:44.58,eva broadcast,Comment,0000,0000,0000,,I understand.
+Dialogue: 0,0:16:46.39,0:16:47.25,eva main,Comment,0000,0000,0000,,Rei.
+Dialogue: 0,0:16:47.25,0:16:48.39,eva main,Comment,0000,0000,0000,,Yes?
+Dialogue: 0,0:16:48.39,0:16:51.26,eva main,Comment,0000,0000,0000,,Our spare is unusable. You will do it again.
+Dialogue: 0,0:16:51.26,0:16:52.23,eva main,Comment,0000,0000,0000,,Yes, Sir.
+Dialogue: 0,0:16:54.50,0:16:57.93,eva main,Comment,0000,0000,0000,,Reconfigure Unit 01's system to Rei,\nthen re-activate!
+Dialogue: 0,0:16:57.93,0:17:00.99,eva broadcast,Comment,0000,0000,0000,,Roger. Call off the present work,\nand begin re-activation.
+Dialogue: 0,0:17:02.97,0:17:06.80,eva main,Comment,0000,0000,0000,,I knew it. I'm not needed after all.
+Dialogue: 0,0:17:40.67,0:17:41.70,eva main,Comment,0000,0000,0000,,Watch out!
+Dialogue: 0,0:17:51.32,0:17:52.89,eva broadcast,Comment,0000,0000,0000,,The Eva moved!
+Dialogue: 0,0:17:52.89,0:17:54.09,eva broadcast,Comment,0000,0000,0000,,What's going on?!
+Dialogue: 0,0:17:54.09,0:17:56.46,eva broadcast,Comment,0000,0000,0000,,It broke the right arm restraint!
+Dialogue: 0,0:17:56.46,0:17:58.02,eva main,Comment,0000,0000,0000,,No, that's impossible!
+Dialogue: 0,0:17:58.53,0:18:00.73,eva main,Comment,0000,0000,0000,,It didn't even have an entry plug inserted!
+Dialogue: 0,0:18:00.73,0:18:01.96,eva main,Comment,0000,0000,0000,,There's no way it could have moved!
+Dialogue: 0,0:18:03.10,0:18:05.33,eva main,Comment,0000,0000,0000,,It reacted without any interface?!
+Dialogue: 0,0:18:06.13,0:18:08.20,eva main,Comment,0000,0000,0000,,Or was it protecting...
+Dialogue: 0,0:18:08.20,0:18:09.23,eva main,Comment,0000,0000,0000,,him?
+Dialogue: 0,0:18:10.54,0:18:11.53,eva main,Comment,0000,0000,0000,,We can do it.
+Dialogue: 0,0:18:32.56,0:18:37.16,eva main,Comment,0000,0000,0000,,I mustn't run away. I mustn't run away.\NI mustn't run away. I mustn't run away.
+Dialogue: 0,0:18:37.16,0:18:38.32,eva main,Comment,0000,0000,0000,,I mustn't run away!
+Dialogue: 0,0:18:39.77,0:18:40.67,eva main,Comment,0000,0000,0000,,I'll do it.
+Dialogue: 0,0:18:41.37,0:18:42.49,eva main,Comment,0000,0000,0000,,I'll pilot it!
+Dialogue: 0,0:18:46.04,0:18:47.34,eva broadcast,Comment,0000,0000,0000,,Cooling process, completed.
+Dialogue: 0,0:18:47.34,0:18:48.88,eva broadcast,Comment,0000,0000,0000,,Right arm re-secured.
+Dialogue: 0,0:18:48.88,0:18:50.91,eva broadcast,Comment,0000,0000,0000,,Cage contents now in position for docking.
+Dialogue: 0,0:18:50.91,0:18:51.85,eva main,Comment,0000,0000,0000,,Roger.
+Dialogue: 0,0:18:51.85,0:18:54.68,eva main,Comment,0000,0000,0000,,Signal terminator plug has been ejected.
+Dialogue: 0,0:18:55.22,0:18:57.82,eva broadcast,Comment,0000,0000,0000,,Roger. Inserting entry plug.
+Dialogue: 0,0:18:57.82,0:19:00.88,eva broadcast,Comment,0000,0000,0000,,Direct hydro-transmission system,\nconnection prepared.
+Dialogue: 0,0:19:04.93,0:19:06.43,eva broadcast,Comment,0000,0000,0000,,Plug fixed in place.
+Dialogue: 0,0:19:06.43,0:19:08.16,eva broadcast,Comment,0000,0000,0000,,First stage connection initiated.
+Dialogue: 0,0:19:13.07,0:19:14.90,eva broadcast,Comment,0000,0000,0000,,Filling the entry plug.
+Dialogue: 0,0:19:16.07,0:19:17.47,eva main,Comment,0000,0000,0000,,What is this stuff?
+Dialogue: 0,0:19:21.41,0:19:24.45,eva main,Comment,0000,0000,0000,,Don't worry. Once your lungs\nare filled with LCL,
+Dialogue: 0,0:19:24.45,0:19:27.21,eva main,Comment,0000,0000,0000,,your blood will be oxygenated directly.
+Dialogue: 0,0:19:27.21,0:19:28.55,eva broadcast,Comment,0000,0000,0000,,You'll get used to it.
+Dialogue: 0,0:19:32.02,0:19:33.45,eva main,Comment,0000,0000,0000,,I feel nauseous.
+Dialogue: 0,0:19:33.45,0:19:35.72,eva main,Comment,0000,0000,0000,,Stop whining! You're a boy, aren't you?!
+Dialogue: 0,0:19:37.02,0:19:38.16,eva broadcast,Comment,0000,0000,0000,,Connecting main power.
+Dialogue: 0,0:19:38.16,0:19:40.86,eva broadcast,Comment,0000,0000,0000,,All circuits transmitting power.
+Dialogue: 0,0:19:40.86,0:19:41.70,eva broadcast,Comment,0000,0000,0000,,Roger.
+Dialogue: 0,0:19:41.70,0:19:43.36,eva broadcast,Comment,0000,0000,0000,,Commencing secondary contacts.
+Dialogue: 0,0:19:44.93,0:19:47.37,eva broadcast,Comment,0000,0000,0000,,A-10 nerve connection, normal.
+Dialogue: 0,0:19:47.37,0:19:52.57,eva broadcast,Comment,0000,0000,0000,,Set the thought configuration to Japanese.
+Dialogue: 0,0:19:53.44,0:19:55.88,eva broadcast,Comment,0000,0000,0000,,All preliminary contacts established.\NPerformance nominal.
+Dialogue: 0,0:19:55.88,0:19:57.67,eva broadcast,Comment,0000,0000,0000,,Bi-directional circuits are open.
+Dialogue: 0,0:19:58.21,0:20:00.74,eva broadcast,Comment,0000,0000,0000,,Synchronization rate at 41.3%.
+Dialogue: 0,0:20:01.38,0:20:02.62,eva main,Comment,0000,0000,0000,,Amazing.
+Dialogue: 0,0:20:02.62,0:20:06.21,eva main,Comment,0000,0000,0000,,Harmonics are all normal.\NNo disturbances identified.
+Dialogue: 0,0:20:06.99,0:20:08.01,eva main,Comment,0000,0000,0000,,We can do it.
+Dialogue: 0,0:20:09.39,0:20:10.62,eva main,Comment,0000,0000,0000,,Prepare to launch!
+Dialogue: 0,0:20:12.59,0:20:14.13,eva broadcast,Comment,0000,0000,0000,,Prepare to launch!
+Dialogue: 0,0:20:14.13,0:20:15.60,eva broadcast,Comment,0000,0000,0000,,Disengage primary lock bolts!
+Dialogue: 0,0:20:17.13,0:20:20.29,eva broadcast,Comment,0000,0000,0000,,Disengage confirmed.\NDisengaging the umbilical bridge.
+Dialogue: 0,0:20:22.70,0:20:24.10,eva broadcast,Comment,0000,0000,0000,,Disengage secondary lock bolts.
+Dialogue: 0,0:20:26.44,0:20:28.38,eva broadcast,Comment,0000,0000,0000,,Disengage primary restraints.
+Dialogue: 0,0:20:28.38,0:20:30.81,eva broadcast,Comment,0000,0000,0000,,Likewise, disengage secondary restraints.
+Dialogue: 0,0:20:34.28,0:20:37.22,eva broadcast,Comment,0000,0000,0000,,Release safety locks numbers\none through fifteen.
+Dialogue: 0,0:20:37.22,0:20:38.24,eva broadcast,Comment,0000,0000,0000,,Release confirmed.
+Dialogue: 0,0:20:38.65,0:20:40.79,eva broadcast,Comment,0000,0000,0000,,Currently, Unit 01's condition is free.
+Dialogue: 0,0:20:40.79,0:20:42.42,eva broadcast,Comment,0000,0000,0000,,Internal batteries fully charged.
+Dialogue: 0,0:20:42.42,0:20:44.45,eva broadcast,Comment,0000,0000,0000,,External battery outlet, normal.
+Dialogue: 0,0:20:45.03,0:20:47.96,eva main,Comment,0000,0000,0000,,Roger. Move Eva Unit 01\nto the ejector pad.
+Dialogue: 0,0:21:03.54,0:21:05.44,eva main,Comment,0000,0000,0000,,Launch path is clear. All systems green.
+Dialogue: 0,0:21:05.85,0:21:07.18,eva main,Comment,0000,0000,0000,,Ready for launch.
+Dialogue: 0,0:21:08.25,0:21:09.18,eva main,Comment,0000,0000,0000,,Roger.
+Dialogue: 0,0:21:10.02,0:21:11.12,eva main,Comment,0000,0000,0000,,Can we really do this?
+Dialogue: 0,0:21:11.12,0:21:12.18,eva main,Comment,0000,0000,0000,,Of course.
+Dialogue: 0,0:21:13.05,0:21:15.61,eva main,Comment,0000,0000,0000,,Unless we defeat the Angels,\nwe have no future.
+Dialogue: 0,0:21:17.19,0:21:20.18,eva main,Comment,0000,0000,0000,,Ikari, you're really sure about this?
+Dialogue: 0,0:21:21.83,0:21:22.80,eva main,Comment,0000,0000,0000,,Launch!
+Dialogue: 0,0:21:56.76,0:21:58.86,eva main,Comment,0000,0000,0000,,Shinji-kun, don't get killed out there.
+Dialogue: 0,0:21:58.83,0:22:00.46,eva titles,Comment,0000,0000,0000,,{\fsp-3\fs80\pos(531,377)}To Be Continued
+Dialogue: 0,0:23:05.86,0:23:06.77,eva titles,Comment,0000,0000,0000,,{\pos(352,487)\fsp-3}Preview
+Dialogue: 0,0:23:06.77,0:23:08.14,eva main,Comment,0000,0000,0000,,Eva triumphs over the Angel!
+Dialogue: 0,0:23:08.14,0:23:10.40,eva main,Comment,0000,0000,0000,,However, that was just the beginning.
+Dialogue: 0,0:23:10.64,0:23:12.27,eva main,Comment,0000,0000,0000,,Shinji runs away from his father.
+Dialogue: 0,0:23:12.27,0:23:15.67,eva main,Comment,0000,0000,0000,,Misato's arrogance leads her\nto try to save him.
+Dialogue: 0,0:23:16.04,0:23:18.41,eva main,Comment,0000,0000,0000,,Next Evangelion: "Unfamiliar Ceiling"
+Dialogue: 0,0:23:18.41,0:23:20.45,eva main,Comment,0000,0000,0000,,I'll give you fan service next time too!
+Dialogue: 0,0:23:18.83,0:23:20.87,eva titles,Comment,0000,0000,0000,,{\c&H071914&\fsp-3\pos(353,389)}Unfamiliar Ceiling
+Dialogue: 0,0:23:18.83,0:23:20.87,eva titles,Comment,0000,0000,0000,,{\c&H071914&\fs60\fsp-2\pos(343,85)}Next Episode
diff --git a/unit_test/unit_test.vcproj b/unit_test/unit_test.vcproj
index d92b9db473cb9944882fd76e78bdfe11efbcb28a..c847b907d0d3b770038b6896922a69d5bbbd2ada 100644
--- a/unit_test/unit_test.vcproj
+++ b/unit_test/unit_test.vcproj
@@ -176,10 +176,22 @@
 				RelativePath=".\src\suites.h"
 				>
 			</File>
+			<File
+				RelativePath=".\src\utils.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\src\utils.h"
+				>
+			</File>
 		</Filter>
 		<Filter
 			Name="Athenasub"
 			>
+			<File
+				RelativePath=".\src\athenasub\test_file.cpp"
+				>
+			</File>
 			<File
 				RelativePath=".\src\athenasub\test_string.cpp"
 				>