diff --git a/netkan/netkan/metadata.py b/netkan/netkan/metadata.py
index 0f8a6ca..f598a46 100644
--- a/netkan/netkan/metadata.py
+++ b/netkan/netkan/metadata.py
@@ -16,8 +16,11 @@ class Netkan:
             self.contents = contents
         self._raw = json.loads(self.contents)
         # Extract kref_src + kref_id from the kref
-        self.kref_src, self.kref_id = self.KREF_PATTERN.match(
-            self.kref).groups()
+        if self.has_kref:
+            self.kref_src, self.kref_id = self.KREF_PATTERN.match(self.kref).groups()
+        else:
+            self.kref_src = None
+            self.kref_id = None
 
     def __getattr__(self, name):
         # Return kref host, ie `self.on_spacedock`. Current krefs include
diff --git a/netkan/netkan/scheduler.py b/netkan/netkan/scheduler.py
index 3269241..44860ab 100644
--- a/netkan/netkan/scheduler.py
+++ b/netkan/netkan/scheduler.py
@@ -22,7 +22,7 @@ class NetkanScheduler:
 
     def netkans(self):
         # This can easily be recursive with '**/*.netkan', however
-        # implemeneting like for like initially.
+        # implementing like for like initially.
         return (Netkan(f) for f in self.path.glob('*.netkan'))
 
     def sqs_batch_entries(self, batch_size=10):

[Bug] Bot only crawling about 30 mods at the moment
## Problem

1. Go to http://status.ksp-ckan.space/
2. Sort by Last Checked
3. Scroll down to where the times jump from short to long; currently it's here:
  ![image](https://user-images.githubusercontent.com/1559108/67504543-309dad80-f64f-11e9-99f1-ae192ea2275e.png)

The mods with recent times only number about 30. The rest aren't being checked.
Are the remaining mods not being scheduled? Is the Inflator stopping mid-pass?

### Clues

- Started happening after #48 was merged
- The inflation webhooks are working
- Inflator hasn't been changed
- Indexer hasn't been changed
- Scheduler had a parameter and a local variable renamed, which should have had no effect, but who knows
- The most recently checked mod is pretty consistently `ContractConfigurator-KFiles`
diff --git a/netkan/tests/metadata.py b/netkan/tests/metadata.py
index b0042c6..45fc597 100644
--- a/netkan/tests/metadata.py
+++ b/netkan/tests/metadata.py
@@ -86,6 +86,27 @@ class TestNetKANNetkan(TestNetKAN):
         self.assertFalse(self.netkan.hook_only())
 
 
+class TestNetKANNoKref(TestNetKAN):
+
+    def setUp(self):
+        self.netkan = Netkan(contents="""{
+            "spec_version": "v1.4",
+            "identifier":   "LightsOut-Fwiffo",
+            "license":      "MIT",
+            "version":      "v0.1.5.1",
+            "download":     "https://cdn.rawgit.com/rkagerer/KSP-Fwiffo-Repository/master/Mods/LightsOut-Fwiffo-v0.1.5.1.zip"
+        }""")
+
+    def test_kref(self):
+        self.assertFalse(self.netkan.has_kref)
+
+    def test_kref_src(self):
+        self.assertEqual(self.netkan.kref_src, None)
+
+    def test_kref_id(self):
+        self.assertEqual(self.netkan.kref_id, None)
+
+
 class TestNetKANVref(TestNetKAN):
 
     def setUp(self):
@@ -101,7 +122,7 @@ class TestNetKANVref(TestNetKAN):
 class TestCkanSimple(unittest.TestCase):
 
     def setUp(self):
-        self.ckan = Ckan(contents = """{
+        self.ckan = Ckan(contents="""{
             "spec_version": "v1.4",
             "identifier":   "AwesomeMod",
             "version":      "1.0.0",
@@ -135,7 +156,7 @@ class TestCkanSimple(unittest.TestCase):
 class TestCkanComplex(unittest.TestCase):
 
     def setUp(self):
-        self.ckan = Ckan(contents = """{
+        self.ckan = Ckan(contents="""{
             "spec_version": "v1.4",
             "identifier":   "AwesomeMod",
             "version":      "1.0.0",

pip install --user -e netkan/.[development]
parse_log_pytest
pytest
pytest
apt-get update apt-get install -y gcc
3.7
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
astroid==2.15.8
attrs @ file:///croot/attrs_1668696182826/work
autopep8==2.0.4
boto3==1.33.13
botocore==1.33.13
certifi @ file:///croot/certifi_1671487769961/work/certifi
cfn-flip==1.3.0
charset-normalizer==3.4.1
click==8.1.8
dill==0.3.7
Flask==2.2.5
flit_core @ file:///opt/conda/conda-bld/flit-core_1644941570762/work/source/flit_core
gitdb==4.0.12
GitPython==3.1.44
gunicorn==23.0.0
idna==3.10
importlib-metadata @ file:///tmp/build/80754af9/importlib-metadata_1648562407465/work
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
internetarchive==5.0.5
isort==5.11.5
itsdangerous==2.1.2
Jinja2==3.1.6
jmespath==1.0.1
jsonpatch==1.33
jsonpointer==3.0.0
lazy-object-proxy==1.9.0
MarkupSafe==2.1.5
mccabe==0.7.0
-e git+https://github.com/KSP-CKAN/NetKAN-Infra.git@7b72e54ee985b7cc3dead5b2381b1a6eada021f5#egg=netkan_indexer&subdirectory=netkan
packaging @ file:///croot/packaging_1671697413597/work
platformdirs==4.0.0
pluggy @ file:///tmp/build/80754af9/pluggy_1648042572264/work
ptvsd==4.3.2
py @ file:///opt/conda/conda-bld/py_1644396412707/work
pycodestyle==2.10.0
pylint==2.17.7
pynamodb==6.0.2
pytest==7.1.2
python-dateutil==2.9.0.post0
PyYAML==6.0.1
requests==2.31.0
s3transfer==0.8.2
six==1.17.0
smmap==5.0.2
tomli @ file:///opt/conda/conda-bld/tomli_1657175507142/work
tomlkit==0.12.5
tqdm==4.67.1
troposphere==4.4.1
typed-ast==1.5.5
typing_extensions==4.7.1
urllib3==1.26.20
Werkzeug==2.2.3
wrapt==1.16.0
zipp @ file:///croot/zipp_1672387121353/work

name: NetKAN-Infra
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - attrs=22.1.0=py37h06a4308_0
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2022.12.7=py37h06a4308_0
  - flit-core=3.6.0=pyhd3eb1b0_0
  - importlib-metadata=4.11.3=py37h06a4308_0
  - importlib_metadata=4.11.3=hd3eb1b0_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - packaging=22.0=py37h06a4308_0
  - pip=22.3.1=py37h06a4308_0
  - pluggy=1.0.0=py37h06a4308_1
  - py=1.11.0=pyhd3eb1b0_0
  - pytest=7.1.2=py37h06a4308_0
  - python=3.7.16=h7a1cb2a_0
  - readline=8.2=h5eee18b_0
  - setuptools=65.6.3=py37h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tomli=2.0.1=py37h06a4308_0
  - typing_extensions=4.4.0=py37h06a4308_0
  - wheel=0.38.4=py37h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zipp=3.11.0=py37h06a4308_0
  - zlib=1.2.13=h5eee18b_1
prefix: /opt/conda/envs/NetKAN-Infra

netkan/tests/metadata.py::TestNetKANNoKref::test_kref netkan/tests/metadata.py::TestNetKANNoKref::test_kref_id netkan/tests/metadata.py::TestNetKANNoKref::test_kref_src
netkan/tests/metadata.py::TestNetKANGitHub::test_has_github_kref netkan/tests/metadata.py::TestNetKANGitHub::test_hook_only netkan/tests/metadata.py::TestNetKANGitHub::test_kref_id netkan/tests/metadata.py::TestNetKANGitHub::test_on_github netkan/tests/metadata.py::TestNetKANSpaceDock::test_has_spacedock_kref netkan/tests/metadata.py::TestNetKANSpaceDock::test_hook_only netkan/tests/metadata.py::TestNetKANSpaceDock::test_kref_id netkan/tests/metadata.py::TestNetKANSpaceDock::test_on_spacedock netkan/tests/metadata.py::TestNetKANCurse::test_has_curse_kref netkan/tests/metadata.py::TestNetKANCurse::test_hook_only netkan/tests/metadata.py::TestNetKANCurse::test_kref_id netkan/tests/metadata.py::TestNetKANCurse::test_on_curse netkan/tests/metadata.py::TestNetKANNetkan::test_has_netkan_kref netkan/tests/metadata.py::TestNetKANNetkan::test_hook_only netkan/tests/metadata.py::TestNetKANNetkan::test_kref_id netkan/tests/metadata.py::TestNetKANNetkan::test_on_netkan netkan/tests/metadata.py::TestNetKANVref::test_hook_only netkan/tests/metadata.py::TestNetKANVref::test_on_spacedock netkan/tests/metadata.py::TestCkanSimple::test_authors netkan/tests/metadata.py::TestCkanSimple::test_basic_properties netkan/tests/metadata.py::TestCkanSimple::test_cache netkan/tests/metadata.py::TestCkanSimple::test_default_kind netkan/tests/metadata.py::TestCkanSimple::test_licenses netkan/tests/metadata.py::TestCkanComplex::test_authors netkan/tests/metadata.py::TestCkanComplex::test_explicit_kind netkan/tests/metadata.py::TestCkanComplex::test_licenses
netkan/netkan/scheduler.py netkan/netkan/metadata.py
netkan/netkan/scheduler.py netkan/netkan/metadata.py