diff --git a/assets/html/repo.html b/assets/html/repo.html
new file mode 100644
index 0000000..c5cedc8
--- /dev/null
+++ b/assets/html/repo.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+
+<html>
+ <head>
+  <title>Repo- ~(repo_name)</title>
+ </head>
+ <body>
+ </body>
+</html>
\ No newline at end of file
diff --git a/lib/client_handler.ex b/lib/client_handler.ex
index fd9ad88..0b03810 100644
--- a/lib/client_handler.ex
+++ b/lib/client_handler.ex
@@ -8,10 +8,10 @@ defmodule RlRepo.ClientHandler do
     Logger.info("Processing client request.")
 
     client_socket
-      |> read_request
-      |> create_response()
-      |> create_response_header()
-      |> write_response(client_socket)
+    |> read_request
+    |> create_response()
+    |> create_response_header()
+    |> write_response(client_socket)
   end
 
   def read_request(client_socket) do
@@ -27,15 +27,13 @@ defmodule RlRepo.ClientHandler do
 
     Logger.info("Building response body.")
 
-
     a = String.split(request, "\n\r")
     [get_line | _rest] = a
-    Logger.info "get-line #{get_line}"
-
+    Logger.info("get-line #{get_line}")
 
     b = String.split(get_line, " ")
     [request_type | rest] = b
-    Logger.info "REQ_TYPE #{request_type}"
+    Logger.info("REQ_TYPE #{request_type}")
     [path | _rest] = rest
     Logger.info("PATH #{path}")
 
@@ -44,23 +42,23 @@ defmodule RlRepo.ClientHandler do
     split_path_length = length(split_path)
 
     # TODO: Handle routing here.
-      case split_path_length do
-        1 ->
-          RlRepo.Router.parse_1_segment_path(split_path)
-          |> RlRepo.Router.route_1(request_type)
+    case split_path_length do
+      1 ->
+        RlRepo.Router.parse_1_segment_path(split_path)
+        |> RlRepo.Router.route_1(request_type)
 
-        3 ->
-          RlRepo.Router.parse_3_segment_path(split_path)
-          |> RlRepo.Router.route_3(request_type)
+      3 ->
+        RlRepo.Router.parse_3_segment_path(split_path)
+        |> RlRepo.Router.route_3(request_type)
 
-        4 ->
-          RlRepo.Router.parse_4_segment_path(split_path)
-          |> RlRepo.Router.route_4(request_type)
+      4 ->
+        RlRepo.Router.parse_4_segment_path(split_path)
+        |> RlRepo.Router.route_4(request_type)
 
-        # Note: Error handling.
-        _ ->
-          RlRepo.Router.status_404()
-      end
+      # Note: Error handling.
+      _ ->
+        RlRepo.Router.status_404()
+    end
   end
 
   def create_return_code_string(return_code) do
@@ -73,13 +71,14 @@ defmodule RlRepo.ClientHandler do
   def create_response_header(body) do
     {return_code, content_type, body} = body
     html_ver = "1.1"
-"""
-HTTP/#{html_ver} #{create_return_code_string(return_code)}\r
-Content-Type: #{content_type}\r
-Content-Length: #{byte_size(body)}\r
-\r
-#{body}
-"""
+
+    """
+    HTTP/#{html_ver} #{create_return_code_string(return_code)}\r
+    Content-Type: #{content_type}\r
+    Content-Length: #{byte_size(body)}\r
+    \r
+    #{body}
+    """
   end
 
   def write_response(response, client_socket) do
diff --git a/lib/json.ex b/lib/json.ex
index 82deca0..007143d 100644
--- a/lib/json.ex
+++ b/lib/json.ex
@@ -3,9 +3,14 @@ defmodule RlRepo.Json do
 
   @moduledoc """
   """
-  def fmt_as_json(a) do
-    "{\"pkg_name\": \"abc\"," <>
-    "\"" <>
+  def map_to_json(a) do
+    # msg = ""
+    "{" <>
+      kv_step("", "key", "value") <>
     "}"
   end
+
+  def kv_step(msg, key, value) do
+    msg <> "\"#{key}\" : \"#{value}\""
+  end
 end
diff --git a/lib/repo/repo_lookup.ex b/lib/repo/repo_lookup.ex
new file mode 100644
index 0000000..23bed50
--- /dev/null
+++ b/lib/repo/repo_lookup.ex
@@ -0,0 +1,58 @@
+defmodule RepoLookup do
+  require Logger
+
+  def is_repo?(string) do
+    send(:repo_lookup, {"is_repo?", string, self()})
+
+    receive do
+      {"is_repo", value} ->
+        value
+    end
+  end
+
+  def repo_contains_pkg?(repo_name, pkg) do
+    send(:repo_lookup, {"repo_contains_pkg?", repo_name, pkg, self()})
+
+   receive do
+      {"repo_contains_pkg?", value} ->
+        value
+    end
+  end
+
+  def alias_check() do
+    # Set this process up to allow finding it via the :repo_lookup alias
+
+    if Enum.member?(Process.registered(), :repo_lookup) do
+      # Process.unalias(:repo_lookup)
+    end
+
+    Process.register(self(), :repo_lookup)
+  end
+
+  def start_repo_lookup() do
+    Logger.info("Repo spinning.")
+    alias_check()
+
+    Logger.info("Logger process alias registered")
+    loop_repo_lookup()
+  end
+
+  def loop_repo_lookup() do
+    Logger.info("Repo Lookup loop")
+
+    receive do
+      {"is_repo", value, return_pid} ->
+        Logger.info("Checking #{value}")
+        send(return_pid, {"is_repo", false})
+
+{"repo_contains_pkg?", repo_name, pkg_name, pid}
+->
+  Logger.info "Checking repo #{repo_name} for pkg #{pkg_name}"
+  send(pid, {"repo_contains_pkg?", false})
+
+
+    end
+
+    loop_repo_lookup()
+  end
+end
diff --git a/lib/rl_repo.ex b/lib/rl_repo.ex
index b043ed1..62aed95 100644
--- a/lib/rl_repo.ex
+++ b/lib/rl_repo.ex
@@ -13,6 +13,12 @@ defmodule RlRepo do
 
     Logger.info("Listening on port #{port}")
 
+    # Spawn RepoLookup
+
+    Task.Supervisor.start_child(RlRepo.QueryServices, fn ->
+      RepoLookup.start_repo_lookup()
+    end)
+
     loop_acceptor(listener_socket)
   end
 
diff --git a/lib/rl_repo/application.ex b/lib/rl_repo/application.ex
index a636e2b..f97509f 100644
--- a/lib/rl_repo/application.ex
+++ b/lib/rl_repo/application.ex
@@ -10,6 +10,8 @@ defmodule RlRepo.Application do
     port = String.to_integer(System.get_env("PORT") || "10002")
 
     children = [
+      {Task.Supervisor, name: RlRepo.QueryServices},
+
       # Starts a worker by calling: RlRepo.Worker.start_link(arg)
       # {RlRepo.Worker, arg}
       Supervisor.child_spec({Task, fn -> RlRepo.start(port) end}, restart: :permanent)
diff --git a/lib/routing.ex b/lib/routing.ex
index 4b98c05..a5017b5 100644
--- a/lib/routing.ex
+++ b/lib/routing.ex
@@ -28,17 +28,26 @@ defmodule RlRepo.Router do
     Logger.info("#{request_type}")
     {repo_name, pkg_name, action} = path
 
-    if action == "info" do
-      Logger.info("fetching json")
+    if RepoLookup.is_repo?(repo_name) do
+      Logger.info("#{repo_name} is a repo.")
+    else
+      Logger.info("#{repo_name} is not a repo.")
     end
 
-    {200, "application/json", "{\"pkg_name\": \"#{pkg_name}\"}"}
+    if action == "info" do
+      Logger.info("fetching json")
+      {200, "application/json", "{\"pkg_name\": \"#{pkg_name}\"}"}
+    end
+
+    placeholders = %{}
+    # {200, "text/html", "<p>REPO_PAGE</p>"}
+    {200, "text/html", RlRepo.Template.template("repo", placeholders)}
   end
 
   def route_4(path, request_type) do
     Logger.info("#{request_type}")
     # {repo_name, sub_repo_name, pkg_name, action} = path
-    {200, "application/json", RlRepo.Json.fmt_as_json()}
+    {200, "application/json", RlRepo.Json.map_to_json(%{})}
   end
 
   def parse_1_segment_path(path) do