diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 8d6052109b401bc4cfdc65e0877c5de33547acf4..4de28c8242a6f25cfc5f834cd38ddfe298e74214 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,8 +1,8 @@
 # Contributing to the Semantic Router
 
-The Aurelio Team welcome and encourage any contributions to the Semantic Router, big or small. Please, feel free to contribute to new features, bug fixes, or documentation. We're always eager to hear your suggestions.
+The Aurelio Team welcome and encourage any contributions to the Semantic Router, big or small. Please feel free to contribute to new features, bug fixes, or documentation. We're always eager to hear your suggestions.
 
-Please, follow these guidelines when making a contribution:
+Please follow these guidelines when making a contribution:
 1. **Check for Existing Issues:** Before making any changes, [check here for related issues](https://github.com/aurelio-labs/semantic-router/issues).
 2. **Run Your Changes by Us!** If no related issue exists yet, please create one and suggest your changes. Checking in with the team first will allow us to determine if the changes are in scope.
 3. **Set Up Development Environment** If the changes are agreed, then you can go ahead and set up a development environment (see [Setting Up Your Development Environment](#setting-up-your-development-environment) below).
diff --git a/coverage.xml b/coverage.xml
index 818c03043d0b60de21e9ba07c5cb73708b46c5de..ef0c214f529c075212da1cf239a8e603949c24ab 100644
--- a/coverage.xml
+++ b/coverage.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" ?>
-<coverage version="7.4.3" timestamp="1709373085574" lines-valid="2072" lines-covered="1331" line-rate="0.6424" branches-covered="0" branches-valid="0" branch-rate="0" complexity="0">
+<coverage version="7.4.3" timestamp="1710353742486" lines-valid="2080" lines-covered="1625" line-rate="0.7812" branches-covered="0" branches-valid="0" branch-rate="0" complexity="0">
 	<!-- Generated by coverage.py: https://coverage.readthedocs.io/en/7.4.3 -->
 	<!-- Based on https://raw.githubusercontent.com/cobertura/web/master/htdocs/xml/coverage-04.dtd -->
 	<sources>
-		<source>/Users/jamesbriggs/Documents/projects/aurelio-labs/semantic-router/semantic_router</source>
+		<source>/Users/andreped/workspace/semantic-router/semantic_router</source>
 	</sources>
 	<packages>
-		<package name="." line-rate="0.7702" branch-rate="0" complexity="0">
+		<package name="." line-rate="0.8962" branch-rate="0" complexity="0">
 			<classes>
 				<class name="__init__.py" filename="__init__.py" complexity="0" line-rate="1" branch-rate="0">
 					<methods/>
@@ -18,7 +18,7 @@
 						<line number="7" hits="1"/>
 					</lines>
 				</class>
-				<class name="hybrid_layer.py" filename="hybrid_layer.py" complexity="0" line-rate="0.2115" branch-rate="0">
+				<class name="hybrid_layer.py" filename="hybrid_layer.py" complexity="0" line-rate="0.972" branch-rate="0">
 					<methods/>
 					<lines>
 						<line number="1" hits="1"/>
@@ -33,101 +33,104 @@
 						<line number="18" hits="1"/>
 						<line number="19" hits="1"/>
 						<line number="21" hits="1"/>
-						<line number="28" hits="0"/>
-						<line number="29" hits="0"/>
-						<line number="31" hits="0"/>
-						<line number="32" hits="0"/>
+						<line number="29" hits="1"/>
+						<line number="30" hits="1"/>
+						<line number="32" hits="1"/>
 						<line number="33" hits="0"/>
-						<line number="35" hits="0"/>
-						<line number="37" hits="0"/>
-						<line number="38" hits="0"/>
-						<line number="39" hits="0"/>
-						<line number="42" hits="0"/>
-						<line number="44" hits="0"/>
-						<line number="48" hits="0"/>
-						<line number="50" hits="1"/>
-						<line number="51" hits="0"/>
-						<line number="52" hits="0"/>
-						<line number="53" hits="0"/>
-						<line number="54" hits="0"/>
-						<line number="55" hits="0"/>
-						<line number="57" hits="0"/>
+						<line number="34" hits="0"/>
+						<line number="36" hits="1"/>
+						<line number="38" hits="1"/>
+						<line number="39" hits="1"/>
+						<line number="40" hits="1"/>
+						<line number="41" hits="0"/>
+						<line number="42" hits="1"/>
+						<line number="43" hits="1"/>
+						<line number="46" hits="1"/>
+						<line number="48" hits="1"/>
+						<line number="52" hits="1"/>
+						<line number="54" hits="1"/>
+						<line number="55" hits="1"/>
+						<line number="56" hits="1"/>
+						<line number="57" hits="1"/>
+						<line number="58" hits="1"/>
 						<line number="59" hits="1"/>
-						<line number="60" hits="0"/>
-						<line number="62" hits="1"/>
-						<line number="63" hits="0"/>
-						<line number="65" hits="0"/>
-						<line number="67" hits="0"/>
-						<line number="70" hits="0"/>
-						<line number="72" hits="0"/>
-						<line number="73" hits="0"/>
-						<line number="76" hits="0"/>
-						<line number="78" hits="0"/>
-						<line number="81" hits="0"/>
-						<line number="82" hits="0"/>
-						<line number="84" hits="0"/>
-						<line number="85" hits="0"/>
-						<line number="86" hits="0"/>
+						<line number="61" hits="1"/>
+						<line number="63" hits="1"/>
+						<line number="64" hits="1"/>
+						<line number="66" hits="1"/>
+						<line number="67" hits="1"/>
+						<line number="69" hits="1"/>
+						<line number="71" hits="1"/>
+						<line number="74" hits="1"/>
+						<line number="76" hits="1"/>
+						<line number="77" hits="1"/>
+						<line number="80" hits="1"/>
+						<line number="82" hits="1"/>
+						<line number="85" hits="1"/>
+						<line number="86" hits="1"/>
 						<line number="88" hits="1"/>
-						<line number="90" hits="0"/>
-						<line number="91" hits="0"/>
-						<line number="94" hits="0"/>
-						<line number="95" hits="0"/>
-						<line number="98" hits="0"/>
-						<line number="99" hits="0"/>
-						<line number="100" hits="0"/>
-						<line number="106" hits="1"/>
-						<line number="107" hits="0"/>
-						<line number="109" hits="0"/>
-						<line number="115" hits="1"/>
-						<line number="116" hits="0"/>
-						<line number="118" hits="0"/>
-						<line number="124" hits="1"/>
-						<line number="129" hits="0"/>
-						<line number="130" hits="0"/>
-						<line number="132" hits="0"/>
-						<line number="133" hits="0"/>
-						<line number="135" hits="0"/>
-						<line number="137" hits="0"/>
-						<line number="139" hits="0"/>
-						<line number="140" hits="0"/>
-						<line number="141" hits="0"/>
-						<line number="143" hits="0"/>
-						<line number="144" hits="0"/>
-						<line number="145" hits="0"/>
-						<line number="146" hits="0"/>
-						<line number="148" hits="0"/>
-						<line number="149" hits="0"/>
-						<line number="150" hits="0"/>
-						<line number="152" hits="0"/>
-						<line number="153" hits="0"/>
-						<line number="155" hits="0"/>
-						<line number="156" hits="0"/>
-						<line number="158" hits="1"/>
-						<line number="160" hits="0"/>
-						<line number="161" hits="0"/>
-						<line number="162" hits="0"/>
+						<line number="89" hits="1"/>
+						<line number="90" hits="1"/>
+						<line number="92" hits="1"/>
+						<line number="94" hits="1"/>
+						<line number="95" hits="1"/>
+						<line number="98" hits="1"/>
+						<line number="99" hits="1"/>
+						<line number="102" hits="1"/>
+						<line number="103" hits="1"/>
+						<line number="104" hits="1"/>
+						<line number="110" hits="1"/>
+						<line number="111" hits="1"/>
+						<line number="113" hits="1"/>
+						<line number="119" hits="1"/>
+						<line number="120" hits="1"/>
+						<line number="122" hits="1"/>
+						<line number="128" hits="1"/>
+						<line number="133" hits="1"/>
+						<line number="134" hits="1"/>
+						<line number="136" hits="1"/>
+						<line number="137" hits="1"/>
+						<line number="139" hits="1"/>
+						<line number="141" hits="1"/>
+						<line number="143" hits="1"/>
+						<line number="144" hits="1"/>
+						<line number="145" hits="1"/>
+						<line number="147" hits="1"/>
+						<line number="148" hits="1"/>
+						<line number="149" hits="1"/>
+						<line number="150" hits="1"/>
+						<line number="152" hits="1"/>
+						<line number="153" hits="1"/>
+						<line number="154" hits="1"/>
+						<line number="156" hits="1"/>
+						<line number="157" hits="1"/>
+						<line number="159" hits="1"/>
+						<line number="160" hits="1"/>
+						<line number="162" hits="1"/>
 						<line number="164" hits="1"/>
-						<line number="165" hits="0"/>
-						<line number="166" hits="0"/>
-						<line number="167" hits="0"/>
-						<line number="168" hits="0"/>
-						<line number="169" hits="0"/>
-						<line number="170" hits="0"/>
-						<line number="172" hits="0"/>
-						<line number="175" hits="0"/>
-						<line number="176" hits="0"/>
-						<line number="179" hits="0"/>
-						<line number="180" hits="0"/>
-						<line number="182" hits="0"/>
-						<line number="183" hits="0"/>
-						<line number="185" hits="1"/>
-						<line number="186" hits="0"/>
-						<line number="187" hits="0"/>
-						<line number="189" hits="0"/>
+						<line number="165" hits="1"/>
+						<line number="166" hits="1"/>
+						<line number="168" hits="1"/>
+						<line number="169" hits="1"/>
+						<line number="170" hits="1"/>
+						<line number="171" hits="1"/>
+						<line number="172" hits="1"/>
+						<line number="173" hits="1"/>
+						<line number="174" hits="1"/>
+						<line number="176" hits="1"/>
+						<line number="179" hits="1"/>
+						<line number="180" hits="1"/>
+						<line number="183" hits="1"/>
+						<line number="184" hits="1"/>
+						<line number="186" hits="1"/>
+						<line number="187" hits="1"/>
+						<line number="189" hits="1"/>
+						<line number="190" hits="1"/>
+						<line number="191" hits="1"/>
+						<line number="193" hits="1"/>
 					</lines>
 				</class>
-				<class name="layer.py" filename="layer.py" complexity="0" line-rate="0.8949" branch-rate="0">
+				<class name="layer.py" filename="layer.py" complexity="0" line-rate="0.8936" branch-rate="0">
 					<methods/>
 					<lines>
 						<line number="1" hits="1"/>
@@ -260,152 +263,158 @@
 						<line number="216" hits="0"/>
 						<line number="217" hits="1"/>
 						<line number="219" hits="1"/>
-						<line number="225" hits="1"/>
 						<line number="226" hits="1"/>
 						<line number="227" hits="1"/>
 						<line number="228" hits="1"/>
-						<line number="230" hits="1"/>
+						<line number="229" hits="1"/>
+						<line number="231" hits="1"/>
 						<line number="232" hits="1"/>
 						<line number="234" hits="1"/>
+						<line number="235" hits="1"/>
 						<line number="236" hits="1"/>
-						<line number="237" hits="1"/>
-						<line number="238" hits="0"/>
 						<line number="239" hits="1"/>
-						<line number="244" hits="1"/>
-						<line number="245" hits="1"/>
-						<line number="246" hits="1"/>
-						<line number="247" hits="1"/>
-						<line number="250" hits="1"/>
-						<line number="251" hits="0"/>
-						<line number="252" hits="0"/>
-						<line number="258" hits="0"/>
-						<line number="259" hits="0"/>
-						<line number="261" hits="0"/>
+						<line number="240" hits="0"/>
+						<line number="241" hits="0"/>
+						<line number="247" hits="0"/>
+						<line number="248" hits="0"/>
+						<line number="250" hits="0"/>
+						<line number="251" hits="1"/>
+						<line number="252" hits="1"/>
+						<line number="253" hits="0"/>
+						<line number="260" hits="1"/>
 						<line number="262" hits="1"/>
-						<line number="265" hits="1"/>
-						<line number="267" hits="1"/>
-						<line number="268" hits="0"/>
+						<line number="270" hits="1"/>
+						<line number="272" hits="1"/>
 						<line number="274" hits="1"/>
 						<line number="275" hits="1"/>
-						<line number="276" hits="1"/>
 						<line number="277" hits="1"/>
-						<line number="278" hits="1"/>
-						<line number="280" hits="1"/>
 						<line number="281" hits="1"/>
-						<line number="282" hits="1"/>
+						<line number="282" hits="0"/>
 						<line number="283" hits="1"/>
-						<line number="284" hits="1"/>
-						<line number="286" hits="1"/>
-						<line number="287" hits="1"/>
 						<line number="288" hits="1"/>
-						<line number="289" hits="1"/>
-						<line number="291" hits="1"/>
-						<line number="292" hits="1"/>
-						<line number="294" hits="1"/>
-						<line number="296" hits="1"/>
+						<line number="290" hits="1"/>
+						<line number="291" hits="0"/>
 						<line number="297" hits="1"/>
+						<line number="298" hits="1"/>
+						<line number="299" hits="1"/>
 						<line number="300" hits="1"/>
+						<line number="301" hits="1"/>
+						<line number="303" hits="1"/>
+						<line number="304" hits="1"/>
 						<line number="305" hits="1"/>
+						<line number="306" hits="1"/>
 						<line number="307" hits="1"/>
-						<line number="308" hits="1"/>
+						<line number="309" hits="1"/>
 						<line number="310" hits="1"/>
-						<line number="311" hits="0"/>
-						<line number="313" hits="1"/>
+						<line number="311" hits="1"/>
+						<line number="312" hits="1"/>
+						<line number="314" hits="1"/>
+						<line number="315" hits="1"/>
+						<line number="317" hits="1"/>
 						<line number="319" hits="1"/>
 						<line number="320" hits="1"/>
-						<line number="321" hits="1"/>
-						<line number="322" hits="1"/>
-						<line number="324" hits="1"/>
-						<line number="325" hits="1"/>
-						<line number="327" hits="1"/>
-						<line number="329" hits="0"/>
+						<line number="323" hits="1"/>
+						<line number="328" hits="1"/>
+						<line number="330" hits="1"/>
+						<line number="331" hits="1"/>
+						<line number="333" hits="1"/>
+						<line number="334" hits="0"/>
+						<line number="336" hits="1"/>
+						<line number="342" hits="1"/>
+						<line number="343" hits="1"/>
 						<line number="344" hits="1"/>
-						<line number="346" hits="1"/>
-						<line number="349" hits="1"/>
-						<line number="351" hits="1"/>
-						<line number="353" hits="1"/>
-						<line number="359" hits="1"/>
-						<line number="362" hits="1"/>
-						<line number="363" hits="1"/>
-						<line number="364" hits="1"/>
-						<line number="366" hits="1"/>
+						<line number="345" hits="1"/>
+						<line number="347" hits="1"/>
+						<line number="348" hits="1"/>
+						<line number="350" hits="1"/>
+						<line number="352" hits="0"/>
+						<line number="367" hits="1"/>
 						<line number="369" hits="1"/>
-						<line number="370" hits="1"/>
 						<line number="372" hits="1"/>
-						<line number="373" hits="1"/>
 						<line number="374" hits="1"/>
-						<line number="375" hits="1"/>
 						<line number="376" hits="1"/>
-						<line number="377" hits="1"/>
-						<line number="378" hits="1"/>
-						<line number="380" hits="1"/>
-						<line number="383" hits="1"/>
-						<line number="384" hits="1"/>
+						<line number="382" hits="1"/>
+						<line number="385" hits="1"/>
+						<line number="386" hits="1"/>
 						<line number="387" hits="1"/>
-						<line number="388" hits="1"/>
-						<line number="390" hits="0"/>
-						<line number="391" hits="0"/>
+						<line number="389" hits="1"/>
+						<line number="392" hits="1"/>
 						<line number="393" hits="1"/>
-						<line number="394" hits="1"/>
 						<line number="395" hits="1"/>
+						<line number="396" hits="1"/>
 						<line number="397" hits="1"/>
+						<line number="398" hits="1"/>
 						<line number="399" hits="1"/>
+						<line number="400" hits="1"/>
+						<line number="401" hits="1"/>
 						<line number="403" hits="1"/>
-						<line number="404" hits="1"/>
-						<line number="405" hits="1"/>
-						<line number="409" hits="1"/>
+						<line number="406" hits="1"/>
+						<line number="407" hits="1"/>
 						<line number="410" hits="1"/>
+						<line number="411" hits="1"/>
+						<line number="413" hits="0"/>
+						<line number="414" hits="0"/>
 						<line number="416" hits="1"/>
 						<line number="417" hits="1"/>
 						<line number="418" hits="1"/>
 						<line number="420" hits="1"/>
-						<line number="421" hits="1"/>
 						<line number="422" hits="1"/>
-						<line number="424" hits="1"/>
 						<line number="426" hits="1"/>
-						<line number="430" hits="1"/>
+						<line number="427" hits="1"/>
+						<line number="428" hits="1"/>
 						<line number="432" hits="1"/>
+						<line number="433" hits="1"/>
+						<line number="439" hits="1"/>
 						<line number="440" hits="1"/>
 						<line number="441" hits="1"/>
-						<line number="442" hits="1"/>
 						<line number="443" hits="1"/>
+						<line number="444" hits="1"/>
 						<line number="445" hits="1"/>
-						<line number="446" hits="1"/>
-						<line number="448" hits="1"/>
+						<line number="447" hits="1"/>
 						<line number="449" hits="1"/>
-						<line number="451" hits="1"/>
-						<line number="456" hits="1"/>
-						<line number="458" hits="1"/>
-						<line number="460" hits="1"/>
-						<line number="461" hits="0"/>
-						<line number="462" hits="0"/>
+						<line number="453" hits="1"/>
+						<line number="455" hits="1"/>
+						<line number="463" hits="1"/>
 						<line number="464" hits="1"/>
+						<line number="465" hits="1"/>
 						<line number="466" hits="1"/>
-						<line number="470" hits="1"/>
+						<line number="468" hits="1"/>
+						<line number="469" hits="1"/>
 						<line number="471" hits="1"/>
 						<line number="472" hits="1"/>
-						<line number="473" hits="1"/>
-						<line number="475" hits="1"/>
-						<line number="476" hits="1"/>
-						<line number="478" hits="1"/>
-						<line number="482" hits="1"/>
+						<line number="474" hits="1"/>
+						<line number="479" hits="1"/>
+						<line number="481" hits="1"/>
 						<line number="483" hits="1"/>
-						<line number="484" hits="1"/>
-						<line number="485" hits="1"/>
-						<line number="486" hits="1"/>
+						<line number="484" hits="0"/>
+						<line number="485" hits="0"/>
 						<line number="487" hits="1"/>
-						<line number="488" hits="1"/>
-						<line number="490" hits="1"/>
-						<line number="491" hits="1"/>
+						<line number="489" hits="1"/>
+						<line number="493" hits="1"/>
 						<line number="494" hits="1"/>
-						<line number="500" hits="1"/>
+						<line number="495" hits="1"/>
+						<line number="496" hits="1"/>
+						<line number="498" hits="1"/>
+						<line number="499" hits="1"/>
 						<line number="501" hits="1"/>
-						<line number="502" hits="1"/>
-						<line number="504" hits="1"/>
 						<line number="505" hits="1"/>
 						<line number="506" hits="1"/>
+						<line number="508" hits="1"/>
+						<line number="509" hits="1"/>
+						<line number="510" hits="1"/>
+						<line number="511" hits="1"/>
+						<line number="512" hits="1"/>
 						<line number="514" hits="1"/>
+						<line number="515" hits="1"/>
 						<line number="518" hits="1"/>
+						<line number="524" hits="1"/>
+						<line number="525" hits="1"/>
+						<line number="526" hits="1"/>
+						<line number="528" hits="1"/>
+						<line number="529" hits="1"/>
+						<line number="530" hits="1"/>
+						<line number="538" hits="1"/>
+						<line number="542" hits="1"/>
 					</lines>
 				</class>
 				<class name="linear.py" filename="linear.py" complexity="0" line-rate="1" branch-rate="0">
@@ -426,7 +435,7 @@
 						<line number="30" hits="1"/>
 					</lines>
 				</class>
-				<class name="route.py" filename="route.py" complexity="0" line-rate="0.908" branch-rate="0">
+				<class name="route.py" filename="route.py" complexity="0" line-rate="0.8851" branch-rate="0">
 					<methods/>
 					<lines>
 						<line number="1" hits="1"/>
@@ -439,8 +448,8 @@
 						<line number="10" hits="1"/>
 						<line number="12" hits="1"/>
 						<line number="13" hits="1"/>
-						<line number="14" hits="1"/>
-						<line number="15" hits="1"/>
+						<line number="14" hits="0"/>
+						<line number="15" hits="0"/>
 						<line number="18" hits="1"/>
 						<line number="19" hits="1"/>
 						<line number="20" hits="1"/>
@@ -518,7 +527,7 @@
 						<line number="160" hits="0"/>
 					</lines>
 				</class>
-				<class name="schema.py" filename="schema.py" complexity="0" line-rate="0.8852" branch-rate="0">
+				<class name="schema.py" filename="schema.py" complexity="0" line-rate="0.9" branch-rate="0">
 					<methods/>
 					<lines>
 						<line number="1" hits="1"/>
@@ -536,52 +545,51 @@
 						<line number="25" hits="1"/>
 						<line number="26" hits="1"/>
 						<line number="27" hits="1"/>
-						<line number="28" hits="1"/>
+						<line number="30" hits="1"/>
 						<line number="31" hits="1"/>
 						<line number="32" hits="1"/>
 						<line number="33" hits="1"/>
 						<line number="34" hits="1"/>
-						<line number="35" hits="1"/>
+						<line number="36" hits="1"/>
 						<line number="37" hits="1"/>
 						<line number="38" hits="1"/>
 						<line number="39" hits="1"/>
 						<line number="40" hits="1"/>
 						<line number="41" hits="1"/>
-						<line number="42" hits="1"/>
-						<line number="43" hits="0"/>
+						<line number="42" hits="0"/>
+						<line number="43" hits="1"/>
 						<line number="44" hits="1"/>
 						<line number="45" hits="1"/>
 						<line number="46" hits="1"/>
-						<line number="47" hits="1"/>
+						<line number="47" hits="0"/>
 						<line number="48" hits="0"/>
-						<line number="49" hits="0"/>
-						<line number="51" hits="0"/>
+						<line number="50" hits="0"/>
+						<line number="52" hits="1"/>
 						<line number="53" hits="1"/>
-						<line number="54" hits="1"/>
+						<line number="56" hits="1"/>
 						<line number="57" hits="1"/>
 						<line number="58" hits="1"/>
-						<line number="59" hits="1"/>
+						<line number="60" hits="1"/>
 						<line number="61" hits="1"/>
 						<line number="62" hits="1"/>
 						<line number="63" hits="1"/>
-						<line number="64" hits="1"/>
+						<line number="65" hits="1"/>
 						<line number="66" hits="1"/>
-						<line number="67" hits="1"/>
+						<line number="68" hits="1"/>
 						<line number="69" hits="1"/>
-						<line number="70" hits="0"/>
+						<line number="71" hits="1"/>
 						<line number="72" hits="1"/>
-						<line number="73" hits="1"/>
-						<line number="75" hits="1"/>
-						<line number="76" hits="0"/>
+						<line number="74" hits="1"/>
+						<line number="75" hits="0"/>
+						<line number="78" hits="1"/>
 						<line number="79" hits="1"/>
 						<line number="80" hits="1"/>
 						<line number="81" hits="1"/>
 						<line number="82" hits="1"/>
 						<line number="83" hits="1"/>
-						<line number="84" hits="1"/>
+						<line number="85" hits="1"/>
 						<line number="86" hits="1"/>
-						<line number="87" hits="1"/>
-						<line number="88" hits="0"/>
+						<line number="87" hits="0"/>
 					</lines>
 				</class>
 				<class name="text.py" filename="text.py" complexity="0" line-rate="0.7778" branch-rate="0">
@@ -663,7 +671,7 @@
 				</class>
 			</classes>
 		</package>
-		<package name="encoders" line-rate="0.6679" branch-rate="0" complexity="0">
+		<package name="encoders" line-rate="0.9574" branch-rate="0" complexity="0">
 			<classes>
 				<class name="__init__.py" filename="encoders/__init__.py" complexity="0" line-rate="1" branch-rate="0">
 					<methods/>
@@ -697,7 +705,7 @@
 						<line number="15" hits="1"/>
 					</lines>
 				</class>
-				<class name="bm25.py" filename="encoders/bm25.py" complexity="0" line-rate="0.3404" branch-rate="0">
+				<class name="bm25.py" filename="encoders/bm25.py" complexity="0" line-rate="0.9574" branch-rate="0">
 					<methods/>
 					<lines>
 						<line number="1" hits="1"/>
@@ -711,45 +719,45 @@
 						<line number="18" hits="1"/>
 						<line number="19" hits="1"/>
 						<line number="20" hits="1"/>
-						<line number="21" hits="1"/>
-						<line number="22" hits="1"/>
-						<line number="27" hits="0"/>
-						<line number="29" hits="0"/>
-						<line number="30" hits="0"/>
-						<line number="31" hits="0"/>
-						<line number="32" hits="0"/>
+						<line number="21" hits="0"/>
+						<line number="22" hits="0"/>
+						<line number="27" hits="1"/>
+						<line number="29" hits="1"/>
+						<line number="30" hits="1"/>
+						<line number="31" hits="1"/>
+						<line number="32" hits="1"/>
 						<line number="34" hits="1"/>
-						<line number="35" hits="0"/>
-						<line number="36" hits="0"/>
-						<line number="37" hits="0"/>
-						<line number="38" hits="0"/>
-						<line number="39" hits="0"/>
-						<line number="41" hits="0"/>
+						<line number="35" hits="1"/>
+						<line number="36" hits="1"/>
+						<line number="37" hits="1"/>
+						<line number="38" hits="1"/>
+						<line number="39" hits="1"/>
+						<line number="41" hits="1"/>
 						<line number="43" hits="1"/>
-						<line number="44" hits="0"/>
-						<line number="45" hits="0"/>
-						<line number="46" hits="0"/>
-						<line number="47" hits="0"/>
-						<line number="48" hits="0"/>
-						<line number="49" hits="0"/>
-						<line number="51" hits="0"/>
-						<line number="53" hits="0"/>
-						<line number="54" hits="0"/>
-						<line number="55" hits="0"/>
-						<line number="56" hits="0"/>
-						<line number="57" hits="0"/>
-						<line number="58" hits="0"/>
-						<line number="59" hits="0"/>
-						<line number="60" hits="0"/>
-						<line number="61" hits="0"/>
-						<line number="63" hits="1"/>
-						<line number="64" hits="0"/>
-						<line number="65" hits="0"/>
-						<line number="66" hits="0"/>
-						<line number="67" hits="0"/>
-					</lines>
+						<line number="44" hits="1"/>
+						<line number="45" hits="1"/>
+						<line number="46" hits="1"/>
+						<line number="47" hits="1"/>
+						<line number="48" hits="1"/>
+						<line number="49" hits="1"/>
+						<line number="51" hits="1"/>
+						<line number="53" hits="1"/>
+						<line number="54" hits="1"/>
+						<line number="55" hits="1"/>
+						<line number="56" hits="1"/>
+						<line number="57" hits="1"/>
+						<line number="58" hits="1"/>
+						<line number="59" hits="1"/>
+						<line number="60" hits="1"/>
+						<line number="61" hits="1"/>
+						<line number="63" hits="1"/>
+						<line number="64" hits="1"/>
+						<line number="65" hits="1"/>
+						<line number="66" hits="1"/>
+						<line number="67" hits="1"/>
+					</lines>
 				</class>
-				<class name="clip.py" filename="encoders/clip.py" complexity="0" line-rate="0.2927" branch-rate="0">
+				<class name="clip.py" filename="encoders/clip.py" complexity="0" line-rate="0.939" branch-rate="0">
 					<methods/>
 					<lines>
 						<line number="1" hits="1"/>
@@ -770,70 +778,70 @@
 						<line number="20" hits="1"/>
 						<line number="21" hits="1"/>
 						<line number="23" hits="1"/>
-						<line number="24" hits="0"/>
-						<line number="25" hits="0"/>
+						<line number="24" hits="1"/>
+						<line number="25" hits="1"/>
 						<line number="27" hits="1"/>
-						<line number="33" hits="0"/>
-						<line number="34" hits="0"/>
-						<line number="35" hits="0"/>
-						<line number="37" hits="0"/>
-						<line number="38" hits="0"/>
-						<line number="39" hits="0"/>
-						<line number="40" hits="0"/>
-						<line number="41" hits="0"/>
-						<line number="43" hits="0"/>
-						<line number="44" hits="0"/>
-						<line number="45" hits="0"/>
-						<line number="47" hits="0"/>
-						<line number="48" hits="0"/>
-						<line number="49" hits="0"/>
+						<line number="33" hits="1"/>
+						<line number="34" hits="1"/>
+						<line number="35" hits="1"/>
+						<line number="37" hits="1"/>
+						<line number="38" hits="1"/>
+						<line number="39" hits="1"/>
+						<line number="40" hits="1"/>
+						<line number="41" hits="1"/>
+						<line number="43" hits="1"/>
+						<line number="44" hits="1"/>
+						<line number="45" hits="1"/>
+						<line number="47" hits="1"/>
+						<line number="48" hits="1"/>
+						<line number="49" hits="1"/>
 						<line number="51" hits="1"/>
-						<line number="52" hits="0"/>
-						<line number="53" hits="0"/>
-						<line number="54" hits="0"/>
-						<line number="55" hits="0"/>
-						<line number="61" hits="0"/>
-						<line number="62" hits="0"/>
-						<line number="63" hits="0"/>
-						<line number="64" hits="0"/>
-						<line number="70" hits="0"/>
-						<line number="71" hits="0"/>
+						<line number="52" hits="1"/>
+						<line number="53" hits="1"/>
+						<line number="54" hits="1"/>
+						<line number="55" hits="1"/>
+						<line number="61" hits="1"/>
+						<line number="62" hits="1"/>
+						<line number="63" hits="1"/>
+						<line number="64" hits="1"/>
+						<line number="70" hits="1"/>
+						<line number="71" hits="1"/>
 						<line number="72" hits="0"/>
 						<line number="73" hits="0"/>
-						<line number="79" hits="0"/>
-						<line number="80" hits="0"/>
-						<line number="82" hits="0"/>
-						<line number="86" hits="0"/>
-						<line number="87" hits="0"/>
-						<line number="89" hits="0"/>
-						<line number="90" hits="0"/>
-						<line number="91" hits="0"/>
+						<line number="79" hits="1"/>
+						<line number="80" hits="1"/>
+						<line number="82" hits="1"/>
+						<line number="86" hits="1"/>
+						<line number="87" hits="1"/>
+						<line number="89" hits="1"/>
+						<line number="90" hits="1"/>
+						<line number="91" hits="1"/>
 						<line number="93" hits="1"/>
-						<line number="94" hits="0"/>
+						<line number="94" hits="1"/>
 						<line number="95" hits="0"/>
-						<line number="96" hits="0"/>
+						<line number="96" hits="1"/>
 						<line number="97" hits="0"/>
-						<line number="98" hits="0"/>
-						<line number="99" hits="0"/>
+						<line number="98" hits="1"/>
+						<line number="99" hits="1"/>
 						<line number="101" hits="0"/>
-						<line number="102" hits="0"/>
+						<line number="102" hits="1"/>
 						<line number="104" hits="1"/>
-						<line number="105" hits="0"/>
-						<line number="108" hits="0"/>
-						<line number="109" hits="0"/>
-						<line number="110" hits="0"/>
-						<line number="111" hits="0"/>
+						<line number="105" hits="1"/>
+						<line number="108" hits="1"/>
+						<line number="109" hits="1"/>
+						<line number="110" hits="1"/>
+						<line number="111" hits="1"/>
 						<line number="113" hits="1"/>
-						<line number="114" hits="0"/>
-						<line number="115" hits="0"/>
-						<line number="118" hits="0"/>
-						<line number="119" hits="0"/>
-						<line number="120" hits="0"/>
-						<line number="121" hits="0"/>
+						<line number="114" hits="1"/>
+						<line number="115" hits="1"/>
+						<line number="118" hits="1"/>
+						<line number="119" hits="1"/>
+						<line number="120" hits="1"/>
+						<line number="121" hits="1"/>
 						<line number="123" hits="1"/>
-						<line number="124" hits="0"/>
-						<line number="125" hits="0"/>
-						<line number="126" hits="0"/>
+						<line number="124" hits="1"/>
+						<line number="125" hits="1"/>
+						<line number="126" hits="1"/>
 					</lines>
 				</class>
 				<class name="cohere.py" filename="encoders/cohere.py" complexity="0" line-rate="1" branch-rate="0">
@@ -870,7 +878,7 @@
 						<line number="49" hits="1"/>
 					</lines>
 				</class>
-				<class name="fastembed.py" filename="encoders/fastembed.py" complexity="0" line-rate="0.6667" branch-rate="0">
+				<class name="fastembed.py" filename="encoders/fastembed.py" complexity="0" line-rate="0.8667" branch-rate="0">
 					<methods/>
 					<lines>
 						<line number="1" hits="1"/>
@@ -890,22 +898,22 @@
 						<line number="23" hits="1"/>
 						<line number="24" hits="1"/>
 						<line number="25" hits="1"/>
-						<line number="26" hits="1"/>
-						<line number="27" hits="1"/>
-						<line number="33" hits="0"/>
-						<line number="40" hits="0"/>
-						<line number="42" hits="0"/>
-						<line number="43" hits="0"/>
+						<line number="26" hits="0"/>
+						<line number="27" hits="0"/>
+						<line number="33" hits="1"/>
+						<line number="40" hits="1"/>
+						<line number="42" hits="1"/>
+						<line number="43" hits="1"/>
 						<line number="45" hits="1"/>
-						<line number="46" hits="0"/>
-						<line number="47" hits="0"/>
-						<line number="48" hits="0"/>
-						<line number="49" hits="0"/>
+						<line number="46" hits="1"/>
+						<line number="47" hits="1"/>
+						<line number="48" hits="1"/>
+						<line number="49" hits="1"/>
 						<line number="50" hits="0"/>
 						<line number="51" hits="0"/>
 					</lines>
 				</class>
-				<class name="huggingface.py" filename="encoders/huggingface.py" complexity="0" line-rate="0.4" branch-rate="0">
+				<class name="huggingface.py" filename="encoders/huggingface.py" complexity="0" line-rate="0.9667" branch-rate="0">
 					<methods/>
 					<lines>
 						<line number="1" hits="1"/>
@@ -929,63 +937,62 @@
 						<line number="25" hits="1"/>
 						<line number="26" hits="1"/>
 						<line number="27" hits="1"/>
-						<line number="33" hits="0"/>
-						<line number="34" hits="0"/>
-						<line number="35" hits="0"/>
-						<line number="36" hits="0"/>
-						<line number="42" hits="0"/>
-						<line number="44" hits="0"/>
-						<line number="49" hits="0"/>
-						<line number="51" hits="0"/>
+						<line number="33" hits="1"/>
+						<line number="34" hits="1"/>
+						<line number="35" hits="1"/>
+						<line number="36" hits="1"/>
+						<line number="42" hits="1"/>
+						<line number="44" hits="1"/>
+						<line number="49" hits="1"/>
+						<line number="51" hits="1"/>
 						<line number="52" hits="0"/>
-						<line number="55" hits="0"/>
-						<line number="56" hits="0"/>
-						<line number="57" hits="0"/>
-						<line number="59" hits="0"/>
+						<line number="55" hits="1"/>
+						<line number="56" hits="1"/>
+						<line number="57" hits="1"/>
+						<line number="59" hits="1"/>
 						<line number="61" hits="1"/>
-						<line number="68" hits="0"/>
-						<line number="69" hits="0"/>
-						<line number="70" hits="0"/>
-						<line number="72" hits="0"/>
-						<line number="76" hits="0"/>
-						<line number="77" hits="0"/>
-						<line number="79" hits="0"/>
-						<line number="80" hits="0"/>
-						<line number="83" hits="0"/>
-						<line number="84" hits="0"/>
+						<line number="68" hits="1"/>
+						<line number="69" hits="1"/>
+						<line number="70" hits="1"/>
+						<line number="72" hits="1"/>
+						<line number="76" hits="1"/>
+						<line number="77" hits="1"/>
+						<line number="79" hits="1"/>
+						<line number="80" hits="1"/>
+						<line number="83" hits="1"/>
+						<line number="84" hits="1"/>
 						<line number="88" hits="0"/>
-						<line number="92" hits="0"/>
-						<line number="93" hits="0"/>
-						<line number="95" hits="0"/>
-						<line number="96" hits="0"/>
-						<line number="97" hits="0"/>
+						<line number="92" hits="1"/>
+						<line number="93" hits="1"/>
+						<line number="95" hits="1"/>
+						<line number="96" hits="1"/>
+						<line number="97" hits="1"/>
 						<line number="99" hits="1"/>
-						<line number="100" hits="0"/>
-						<line number="101" hits="0"/>
-						<line number="104" hits="0"/>
+						<line number="100" hits="1"/>
+						<line number="101" hits="1"/>
+						<line number="104" hits="1"/>
 						<line number="108" hits="1"/>
-						<line number="109" hits="0"/>
-						<line number="110" hits="0"/>
-						<line number="113" hits="0"/>
-						<line number="114" hits="0"/>
+						<line number="109" hits="1"/>
+						<line number="110" hits="1"/>
+						<line number="113" hits="1"/>
+						<line number="114" hits="1"/>
 					</lines>
 				</class>
 				<class name="mistral.py" filename="encoders/mistral.py" complexity="0" line-rate="0.9512" branch-rate="0">
 					<methods/>
 					<lines>
-						<line number="2" hits="1"/>
 						<line number="3" hits="1"/>
 						<line number="4" hits="1"/>
-						<line number="6" hits="1"/>
+						<line number="5" hits="1"/>
 						<line number="7" hits="1"/>
 						<line number="8" hits="1"/>
-						<line number="10" hits="1"/>
+						<line number="9" hits="1"/>
 						<line number="11" hits="1"/>
-						<line number="14" hits="1"/>
-						<line number="17" hits="1"/>
+						<line number="12" hits="1"/>
+						<line number="15" hits="1"/>
 						<line number="18" hits="1"/>
-						<line number="20" hits="1"/>
-						<line number="26" hits="1"/>
+						<line number="19" hits="1"/>
+						<line number="21" hits="1"/>
 						<line number="27" hits="1"/>
 						<line number="28" hits="1"/>
 						<line number="29" hits="1"/>
@@ -993,14 +1000,14 @@
 						<line number="31" hits="1"/>
 						<line number="32" hits="1"/>
 						<line number="33" hits="1"/>
-						<line number="34" hits="0"/>
+						<line number="34" hits="1"/>
 						<line number="35" hits="0"/>
-						<line number="37" hits="1"/>
+						<line number="36" hits="0"/>
 						<line number="38" hits="1"/>
 						<line number="39" hits="1"/>
 						<line number="40" hits="1"/>
 						<line number="41" hits="1"/>
-						<line number="44" hits="1"/>
+						<line number="42" hits="1"/>
 						<line number="45" hits="1"/>
 						<line number="46" hits="1"/>
 						<line number="47" hits="1"/>
@@ -1010,10 +1017,11 @@
 						<line number="51" hits="1"/>
 						<line number="52" hits="1"/>
 						<line number="53" hits="1"/>
-						<line number="55" hits="1"/>
+						<line number="54" hits="1"/>
 						<line number="56" hits="1"/>
 						<line number="57" hits="1"/>
 						<line number="58" hits="1"/>
+						<line number="59" hits="1"/>
 					</lines>
 				</class>
 				<class name="openai.py" filename="encoders/openai.py" complexity="0" line-rate="1" branch-rate="0">
@@ -1138,7 +1146,7 @@
 						<line number="80" hits="1"/>
 					</lines>
 				</class>
-				<class name="vit.py" filename="encoders/vit.py" complexity="0" line-rate="0.3134" branch-rate="0">
+				<class name="vit.py" filename="encoders/vit.py" complexity="0" line-rate="0.9254" branch-rate="0">
 					<methods/>
 					<lines>
 						<line number="1" hits="1"/>
@@ -1157,57 +1165,57 @@
 						<line number="18" hits="1"/>
 						<line number="19" hits="1"/>
 						<line number="21" hits="1"/>
-						<line number="22" hits="0"/>
-						<line number="23" hits="0"/>
+						<line number="22" hits="1"/>
+						<line number="23" hits="1"/>
 						<line number="25" hits="1"/>
-						<line number="26" hits="0"/>
-						<line number="27" hits="0"/>
-						<line number="28" hits="0"/>
-						<line number="29" hits="0"/>
-						<line number="35" hits="0"/>
-						<line number="36" hits="0"/>
-						<line number="37" hits="0"/>
-						<line number="38" hits="0"/>
-						<line number="39" hits="0"/>
-						<line number="45" hits="0"/>
-						<line number="46" hits="0"/>
+						<line number="26" hits="1"/>
+						<line number="27" hits="1"/>
+						<line number="28" hits="1"/>
+						<line number="29" hits="1"/>
+						<line number="35" hits="1"/>
+						<line number="36" hits="1"/>
+						<line number="37" hits="1"/>
+						<line number="38" hits="1"/>
+						<line number="39" hits="1"/>
+						<line number="45" hits="1"/>
+						<line number="46" hits="1"/>
 						<line number="47" hits="0"/>
 						<line number="48" hits="0"/>
-						<line number="54" hits="0"/>
-						<line number="55" hits="0"/>
-						<line number="56" hits="0"/>
-						<line number="58" hits="0"/>
-						<line number="62" hits="0"/>
-						<line number="64" hits="0"/>
-						<line number="65" hits="0"/>
-						<line number="67" hits="0"/>
+						<line number="54" hits="1"/>
+						<line number="55" hits="1"/>
+						<line number="56" hits="1"/>
+						<line number="58" hits="1"/>
+						<line number="62" hits="1"/>
+						<line number="64" hits="1"/>
+						<line number="65" hits="1"/>
+						<line number="67" hits="1"/>
 						<line number="69" hits="1"/>
-						<line number="70" hits="0"/>
+						<line number="70" hits="1"/>
 						<line number="71" hits="0"/>
-						<line number="72" hits="0"/>
+						<line number="72" hits="1"/>
 						<line number="73" hits="0"/>
-						<line number="74" hits="0"/>
-						<line number="75" hits="0"/>
+						<line number="74" hits="1"/>
+						<line number="75" hits="1"/>
 						<line number="77" hits="0"/>
-						<line number="78" hits="0"/>
+						<line number="78" hits="1"/>
 						<line number="80" hits="1"/>
-						<line number="81" hits="0"/>
-						<line number="82" hits="0"/>
-						<line number="83" hits="0"/>
-						<line number="84" hits="0"/>
-						<line number="86" hits="1"/>
-						<line number="87" hits="0"/>
-						<line number="88" hits="0"/>
-						<line number="89" hits="0"/>
+						<line number="81" hits="1"/>
+						<line number="82" hits="1"/>
+						<line number="83" hits="1"/>
+						<line number="84" hits="1"/>
+						<line number="86" hits="1"/>
+						<line number="87" hits="1"/>
+						<line number="88" hits="1"/>
+						<line number="89" hits="1"/>
 						<line number="91" hits="1"/>
-						<line number="96" hits="0"/>
-						<line number="97" hits="0"/>
-						<line number="98" hits="0"/>
-						<line number="99" hits="0"/>
-						<line number="100" hits="0"/>
-						<line number="101" hits="0"/>
-						<line number="107" hits="0"/>
-						<line number="108" hits="0"/>
+						<line number="96" hits="1"/>
+						<line number="97" hits="1"/>
+						<line number="98" hits="1"/>
+						<line number="99" hits="1"/>
+						<line number="100" hits="1"/>
+						<line number="101" hits="1"/>
+						<line number="107" hits="1"/>
+						<line number="108" hits="1"/>
 					</lines>
 				</class>
 				<class name="zure.py" filename="encoders/zure.py" complexity="0" line-rate="0.9589" branch-rate="0">
@@ -1261,31 +1269,31 @@
 						<line number="60" hits="1"/>
 						<line number="67" hits="1"/>
 						<line number="68" hits="1"/>
-						<line number="75" hits="1"/>
-						<line number="76" hits="1"/>
-						<line number="80" hits="1"/>
-						<line number="81" hits="1"/>
+						<line number="77" hits="1"/>
+						<line number="78" hits="1"/>
 						<line number="82" hits="1"/>
 						<line number="83" hits="1"/>
 						<line number="84" hits="1"/>
-						<line number="87" hits="1"/>
-						<line number="88" hits="1"/>
+						<line number="85" hits="1"/>
+						<line number="86" hits="1"/>
 						<line number="89" hits="1"/>
-						<line number="92" hits="1"/>
-						<line number="93" hits="1"/>
+						<line number="90" hits="1"/>
+						<line number="91" hits="1"/>
 						<line number="94" hits="1"/>
+						<line number="95" hits="1"/>
 						<line number="96" hits="1"/>
 						<line number="98" hits="1"/>
-						<line number="99" hits="1"/>
 						<line number="100" hits="1"/>
 						<line number="101" hits="1"/>
 						<line number="102" hits="1"/>
 						<line number="103" hits="1"/>
 						<line number="104" hits="1"/>
+						<line number="105" hits="1"/>
 						<line number="106" hits="1"/>
-						<line number="111" hits="1"/>
+						<line number="108" hits="1"/>
 						<line number="113" hits="1"/>
-						<line number="114" hits="1"/>
+						<line number="115" hits="1"/>
+						<line number="116" hits="1"/>
 					</lines>
 				</class>
 			</classes>
@@ -1533,7 +1541,7 @@
 				</class>
 			</classes>
 		</package>
-		<package name="llms" line-rate="0.7585" branch-rate="0" complexity="0">
+		<package name="llms" line-rate="0.915" branch-rate="0" complexity="0">
 			<classes>
 				<class name="__init__.py" filename="llms/__init__.py" complexity="0" line-rate="1" branch-rate="0">
 					<methods/>
@@ -1547,7 +1555,7 @@
 						<line number="8" hits="1"/>
 					</lines>
 				</class>
-				<class name="base.py" filename="llms/base.py" complexity="0" line-rate="0.7317" branch-rate="0">
+				<class name="base.py" filename="llms/base.py" complexity="0" line-rate="0.9756" branch-rate="0">
 					<methods/>
 					<lines>
 						<line number="1" hits="1"/>
@@ -1571,8 +1579,8 @@
 						<line number="31" hits="1"/>
 						<line number="34" hits="1"/>
 						<line number="35" hits="1"/>
-						<line number="36" hits="0"/>
-						<line number="37" hits="0"/>
+						<line number="36" hits="1"/>
+						<line number="37" hits="1"/>
 						<line number="38" hits="1"/>
 						<line number="39" hits="1"/>
 						<line number="40" hits="1"/>
@@ -1582,15 +1590,15 @@
 						<line number="48" hits="1"/>
 						<line number="98" hits="1"/>
 						<line number="99" hits="1"/>
-						<line number="101" hits="0"/>
+						<line number="101" hits="1"/>
 						<line number="102" hits="0"/>
-						<line number="104" hits="0"/>
-						<line number="105" hits="0"/>
-						<line number="106" hits="0"/>
-						<line number="107" hits="0"/>
-						<line number="108" hits="0"/>
-						<line number="109" hits="0"/>
-						<line number="110" hits="0"/>
+						<line number="104" hits="1"/>
+						<line number="105" hits="1"/>
+						<line number="106" hits="1"/>
+						<line number="107" hits="1"/>
+						<line number="108" hits="1"/>
+						<line number="109" hits="1"/>
+						<line number="110" hits="1"/>
 					</lines>
 				</class>
 				<class name="cohere.py" filename="llms/cohere.py" complexity="0" line-rate="0.9655" branch-rate="0">
@@ -1627,49 +1635,49 @@
 						<line number="48" hits="1"/>
 					</lines>
 				</class>
-				<class name="llamacpp.py" filename="llms/llamacpp.py" complexity="0" line-rate="0" branch-rate="0">
+				<class name="llamacpp.py" filename="llms/llamacpp.py" complexity="0" line-rate="0.9" branch-rate="0">
 					<methods/>
 					<lines>
-						<line number="1" hits="0"/>
-						<line number="2" hits="0"/>
-						<line number="3" hits="0"/>
-						<line number="5" hits="0"/>
-						<line number="7" hits="0"/>
-						<line number="8" hits="0"/>
-						<line number="9" hits="0"/>
-						<line number="12" hits="0"/>
-						<line number="13" hits="0"/>
-						<line number="14" hits="0"/>
-						<line number="15" hits="0"/>
-						<line number="16" hits="0"/>
-						<line number="18" hits="0"/>
-						<line number="26" hits="0"/>
-						<line number="33" hits="0"/>
-						<line number="34" hits="0"/>
-						<line number="35" hits="0"/>
-						<line number="36" hits="0"/>
-						<line number="38" hits="0"/>
-						<line number="42" hits="0"/>
-						<line number="43" hits="0"/>
-						<line number="50" hits="0"/>
-						<line number="51" hits="0"/>
-						<line number="53" hits="0"/>
+						<line number="1" hits="1"/>
+						<line number="2" hits="1"/>
+						<line number="3" hits="1"/>
+						<line number="5" hits="1"/>
+						<line number="7" hits="1"/>
+						<line number="8" hits="1"/>
+						<line number="9" hits="1"/>
+						<line number="12" hits="1"/>
+						<line number="13" hits="1"/>
+						<line number="14" hits="1"/>
+						<line number="15" hits="1"/>
+						<line number="16" hits="1"/>
+						<line number="18" hits="1"/>
+						<line number="26" hits="1"/>
+						<line number="33" hits="1"/>
+						<line number="34" hits="1"/>
+						<line number="35" hits="1"/>
+						<line number="36" hits="1"/>
+						<line number="38" hits="1"/>
+						<line number="42" hits="1"/>
+						<line number="43" hits="1"/>
+						<line number="50" hits="1"/>
+						<line number="51" hits="1"/>
+						<line number="53" hits="1"/>
 						<line number="54" hits="0"/>
-						<line number="55" hits="0"/>
+						<line number="55" hits="1"/>
 						<line number="56" hits="0"/>
 						<line number="57" hits="0"/>
 						<line number="58" hits="0"/>
-						<line number="60" hits="0"/>
-						<line number="61" hits="0"/>
-						<line number="62" hits="0"/>
-						<line number="63" hits="0"/>
-						<line number="64" hits="0"/>
-						<line number="65" hits="0"/>
-						<line number="66" hits="0"/>
-						<line number="68" hits="0"/>
-						<line number="70" hits="0"/>
-						<line number="73" hits="0"/>
-						<line number="74" hits="0"/>
+						<line number="60" hits="1"/>
+						<line number="61" hits="1"/>
+						<line number="62" hits="1"/>
+						<line number="63" hits="1"/>
+						<line number="64" hits="1"/>
+						<line number="65" hits="1"/>
+						<line number="66" hits="1"/>
+						<line number="68" hits="1"/>
+						<line number="70" hits="1"/>
+						<line number="73" hits="1"/>
+						<line number="74" hits="1"/>
 					</lines>
 				</class>
 				<class name="mistral.py" filename="llms/mistral.py" complexity="0" line-rate="0.8333" branch-rate="0">
@@ -1928,28 +1936,28 @@
 						<line number="6" hits="1"/>
 						<line number="7" hits="1"/>
 						<line number="10" hits="1"/>
-						<line number="16" hits="1"/>
+						<line number="15" hits="1"/>
+						<line number="21" hits="1"/>
 						<line number="22" hits="1"/>
 						<line number="23" hits="1"/>
-						<line number="24" hits="1"/>
-						<line number="26" hits="1"/>
-						<line number="28" hits="1"/>
-						<line number="29" hits="1"/>
-						<line number="33" hits="1"/>
+						<line number="25" hits="1"/>
 						<line number="34" hits="1"/>
 						<line number="35" hits="1"/>
-						<line number="36" hits="1"/>
-						<line number="37" hits="1"/>
-						<line number="38" hits="1"/>
 						<line number="39" hits="1"/>
+						<line number="40" hits="1"/>
 						<line number="41" hits="1"/>
 						<line number="42" hits="1"/>
 						<line number="43" hits="1"/>
 						<line number="44" hits="1"/>
-						<line number="51" hits="1"/>
-						<line number="52" hits="1"/>
-						<line number="53" hits="1"/>
-						<line number="54" hits="1"/>
+						<line number="45" hits="1"/>
+						<line number="47" hits="1"/>
+						<line number="48" hits="1"/>
+						<line number="49" hits="1"/>
+						<line number="50" hits="1"/>
+						<line number="57" hits="1"/>
+						<line number="58" hits="1"/>
+						<line number="59" hits="1"/>
+						<line number="60" hits="1"/>
 					</lines>
 				</class>
 				<class name="cumulative_sim.py" filename="splitters/cumulative_sim.py" complexity="0" line-rate="1" branch-rate="0">
@@ -1966,26 +1974,26 @@
 						<line number="23" hits="1"/>
 						<line number="24" hits="1"/>
 						<line number="26" hits="1"/>
-						<line number="27" hits="1"/>
-						<line number="29" hits="1"/>
-						<line number="30" hits="1"/>
 						<line number="34" hits="1"/>
-						<line number="35" hits="1"/>
+						<line number="36" hits="1"/>
 						<line number="37" hits="1"/>
-						<line number="38" hits="1"/>
-						<line number="39" hits="1"/>
+						<line number="41" hits="1"/>
 						<line number="42" hits="1"/>
+						<line number="44" hits="1"/>
+						<line number="45" hits="1"/>
 						<line number="46" hits="1"/>
-						<line number="47" hits="1"/>
-						<line number="50" hits="1"/>
-						<line number="51" hits="1"/>
-						<line number="52" hits="1"/>
+						<line number="49" hits="1"/>
+						<line number="53" hits="1"/>
+						<line number="54" hits="1"/>
 						<line number="57" hits="1"/>
 						<line number="58" hits="1"/>
+						<line number="59" hits="1"/>
+						<line number="64" hits="1"/>
 						<line number="65" hits="1"/>
-						<line number="70" hits="1"/>
-						<line number="71" hits="1"/>
-						<line number="73" hits="1"/>
+						<line number="72" hits="1"/>
+						<line number="77" hits="1"/>
+						<line number="78" hits="1"/>
+						<line number="80" hits="1"/>
 					</lines>
 				</class>
 				<class name="rolling_window.py" filename="splitters/rolling_window.py" complexity="0" line-rate="0.1415" branch-rate="0">
@@ -2025,177 +2033,177 @@
 						<line number="60" hits="0"/>
 						<line number="61" hits="0"/>
 						<line number="63" hits="1"/>
-						<line number="64" hits="0"/>
-						<line number="65" hits="0"/>
-						<line number="67" hits="0"/>
-						<line number="68" hits="0"/>
-						<line number="69" hits="0"/>
-						<line number="70" hits="0"/>
+						<line number="71" hits="0"/>
+						<line number="72" hits="0"/>
+						<line number="74" hits="0"/>
 						<line number="75" hits="0"/>
 						<line number="76" hits="0"/>
 						<line number="77" hits="0"/>
-						<line number="78" hits="0"/>
-						<line number="79" hits="0"/>
-						<line number="81" hits="0"/>
 						<line number="82" hits="0"/>
 						<line number="83" hits="0"/>
 						<line number="84" hits="0"/>
 						<line number="85" hits="0"/>
 						<line number="86" hits="0"/>
-						<line number="88" hits="1"/>
+						<line number="88" hits="0"/>
 						<line number="89" hits="0"/>
 						<line number="90" hits="0"/>
 						<line number="91" hits="0"/>
 						<line number="92" hits="0"/>
 						<line number="93" hits="0"/>
-						<line number="94" hits="0"/>
-						<line number="96" hits="1"/>
+						<line number="95" hits="1"/>
+						<line number="96" hits="0"/>
 						<line number="97" hits="0"/>
 						<line number="98" hits="0"/>
 						<line number="99" hits="0"/>
 						<line number="100" hits="0"/>
 						<line number="101" hits="0"/>
+						<line number="103" hits="1"/>
+						<line number="104" hits="0"/>
 						<line number="105" hits="0"/>
 						<line number="106" hits="0"/>
-						<line number="108" hits="1"/>
-						<line number="109" hits="0"/>
-						<line number="110" hits="0"/>
-						<line number="111" hits="0"/>
+						<line number="107" hits="0"/>
+						<line number="108" hits="0"/>
 						<line number="112" hits="0"/>
 						<line number="113" hits="0"/>
+						<line number="115" hits="1"/>
+						<line number="116" hits="0"/>
+						<line number="117" hits="0"/>
 						<line number="118" hits="0"/>
 						<line number="119" hits="0"/>
-						<line number="121" hits="1"/>
-						<line number="122" hits="0"/>
-						<line number="123" hits="0"/>
+						<line number="120" hits="0"/>
+						<line number="125" hits="0"/>
 						<line number="126" hits="0"/>
-						<line number="127" hits="0"/>
+						<line number="128" hits="1"/>
+						<line number="129" hits="0"/>
 						<line number="130" hits="0"/>
-						<line number="131" hits="0"/>
 						<line number="133" hits="0"/>
 						<line number="134" hits="0"/>
-						<line number="135" hits="0"/>
-						<line number="136" hits="0"/>
 						<line number="137" hits="0"/>
 						<line number="138" hits="0"/>
+						<line number="140" hits="0"/>
+						<line number="141" hits="0"/>
+						<line number="142" hits="0"/>
 						<line number="143" hits="0"/>
-						<line number="151" hits="0"/>
-						<line number="152" hits="0"/>
-						<line number="155" hits="0"/>
-						<line number="160" hits="0"/>
-						<line number="161" hits="0"/>
+						<line number="144" hits="0"/>
+						<line number="145" hits="0"/>
+						<line number="150" hits="0"/>
+						<line number="158" hits="0"/>
+						<line number="159" hits="0"/>
 						<line number="162" hits="0"/>
-						<line number="163" hits="0"/>
-						<line number="164" hits="0"/>
-						<line number="166" hits="0"/>
 						<line number="167" hits="0"/>
 						<line number="168" hits="0"/>
+						<line number="169" hits="0"/>
 						<line number="170" hits="0"/>
-						<line number="176" hits="0"/>
-						<line number="178" hits="1"/>
-						<line number="189" hits="0"/>
-						<line number="190" hits="0"/>
-						<line number="191" hits="0"/>
-						<line number="194" hits="0"/>
-						<line number="195" hits="0"/>
+						<line number="171" hits="0"/>
+						<line number="173" hits="0"/>
+						<line number="174" hits="0"/>
+						<line number="175" hits="0"/>
+						<line number="177" hits="0"/>
+						<line number="183" hits="0"/>
+						<line number="185" hits="1"/>
 						<line number="196" hits="0"/>
+						<line number="197" hits="0"/>
 						<line number="198" hits="0"/>
-						<line number="199" hits="0"/>
-						<line number="200" hits="0"/>
 						<line number="201" hits="0"/>
+						<line number="202" hits="0"/>
 						<line number="203" hits="0"/>
-						<line number="204" hits="0"/>
+						<line number="205" hits="0"/>
+						<line number="206" hits="0"/>
 						<line number="207" hits="0"/>
 						<line number="208" hits="0"/>
 						<line number="210" hits="0"/>
-						<line number="213" hits="0"/>
-						<line number="221" hits="0"/>
-						<line number="225" hits="0"/>
-						<line number="226" hits="0"/>
-						<line number="227" hits="0"/>
-						<line number="230" hits="0"/>
-						<line number="231" hits="0"/>
+						<line number="211" hits="0"/>
+						<line number="214" hits="0"/>
+						<line number="215" hits="0"/>
+						<line number="217" hits="0"/>
+						<line number="220" hits="0"/>
+						<line number="228" hits="0"/>
 						<line number="232" hits="0"/>
-						<line number="240" hits="0"/>
-						<line number="241" hits="0"/>
-						<line number="245" hits="0"/>
+						<line number="233" hits="0"/>
+						<line number="234" hits="0"/>
+						<line number="237" hits="0"/>
+						<line number="238" hits="0"/>
+						<line number="239" hits="0"/>
 						<line number="247" hits="0"/>
 						<line number="248" hits="0"/>
-						<line number="251" hits="0"/>
 						<line number="252" hits="0"/>
-						<line number="260" hits="0"/>
-						<line number="261" hits="0"/>
+						<line number="254" hits="0"/>
+						<line number="255" hits="0"/>
+						<line number="258" hits="0"/>
+						<line number="259" hits="0"/>
 						<line number="267" hits="0"/>
 						<line number="268" hits="0"/>
-						<line number="271" hits="0"/>
-						<line number="272" hits="0"/>
+						<line number="274" hits="0"/>
 						<line number="275" hits="0"/>
-						<line number="280" hits="0"/>
-						<line number="281" hits="0"/>
-						<line number="284" hits="0"/>
-						<line number="285" hits="0"/>
-						<line number="286" hits="0"/>
-						<line number="289" hits="0"/>
+						<line number="278" hits="0"/>
+						<line number="279" hits="0"/>
+						<line number="282" hits="0"/>
+						<line number="287" hits="0"/>
+						<line number="288" hits="0"/>
+						<line number="291" hits="0"/>
+						<line number="292" hits="0"/>
 						<line number="293" hits="0"/>
-						<line number="304" hits="0"/>
-						<line number="306" hits="1"/>
-						<line number="312" hits="0"/>
-						<line number="313" hits="0"/>
-						<line number="314" hits="0"/>
-						<line number="315" hits="0"/>
+						<line number="296" hits="0"/>
+						<line number="300" hits="0"/>
+						<line number="311" hits="0"/>
+						<line number="313" hits="1"/>
 						<line number="319" hits="0"/>
+						<line number="320" hits="0"/>
 						<line number="321" hits="0"/>
 						<line number="322" hits="0"/>
-						<line number="323" hits="0"/>
 						<line number="326" hits="0"/>
-						<line number="327" hits="0"/>
 						<line number="328" hits="0"/>
+						<line number="329" hits="0"/>
+						<line number="330" hits="0"/>
+						<line number="333" hits="0"/>
 						<line number="334" hits="0"/>
-						<line number="342" hits="0"/>
-						<line number="343" hits="0"/>
-						<line number="351" hits="0"/>
-						<line number="352" hits="0"/>
-						<line number="353" hits="0"/>
+						<line number="335" hits="0"/>
+						<line number="341" hits="0"/>
+						<line number="349" hits="0"/>
+						<line number="350" hits="0"/>
+						<line number="358" hits="0"/>
 						<line number="359" hits="0"/>
-						<line number="362" hits="0"/>
-						<line number="363" hits="0"/>
-						<line number="364" hits="0"/>
-						<line number="365" hits="0"/>
+						<line number="360" hits="0"/>
 						<line number="366" hits="0"/>
-						<line number="367" hits="0"/>
-						<line number="368" hits="0"/>
 						<line number="369" hits="0"/>
+						<line number="370" hits="0"/>
+						<line number="371" hits="0"/>
 						<line number="372" hits="0"/>
 						<line number="373" hits="0"/>
 						<line number="374" hits="0"/>
 						<line number="375" hits="0"/>
+						<line number="376" hits="0"/>
 						<line number="379" hits="0"/>
 						<line number="380" hits="0"/>
-						<line number="382" hits="1"/>
-						<line number="385" hits="0"/>
+						<line number="381" hits="0"/>
+						<line number="382" hits="0"/>
 						<line number="386" hits="0"/>
 						<line number="387" hits="0"/>
-						<line number="388" hits="0"/>
-						<line number="389" hits="0"/>
-						<line number="390" hits="0"/>
+						<line number="389" hits="1"/>
+						<line number="392" hits="0"/>
+						<line number="393" hits="0"/>
+						<line number="394" hits="0"/>
+						<line number="395" hits="0"/>
+						<line number="396" hits="0"/>
 						<line number="397" hits="0"/>
-						<line number="398" hits="0"/>
-						<line number="399" hits="0"/>
-						<line number="401" hits="0"/>
-						<line number="402" hits="0"/>
+						<line number="404" hits="0"/>
 						<line number="405" hits="0"/>
-						<line number="410" hits="0"/>
+						<line number="406" hits="0"/>
+						<line number="408" hits="0"/>
+						<line number="409" hits="0"/>
 						<line number="412" hits="0"/>
-						<line number="413" hits="0"/>
-						<line number="414" hits="0"/>
-						<line number="415" hits="0"/>
-						<line number="416" hits="0"/>
 						<line number="417" hits="0"/>
-						<line number="418" hits="0"/>
 						<line number="419" hits="0"/>
+						<line number="420" hits="0"/>
 						<line number="421" hits="0"/>
 						<line number="422" hits="0"/>
 						<line number="423" hits="0"/>
+						<line number="424" hits="0"/>
+						<line number="425" hits="0"/>
+						<line number="426" hits="0"/>
+						<line number="428" hits="0"/>
+						<line number="429" hits="0"/>
+						<line number="430" hits="0"/>
 					</lines>
 				</class>
 				<class name="utils.py" filename="splitters/utils.py" complexity="0" line-rate="0.3636" branch-rate="0">