diff --git a/CHANGELOG b/CHANGELOG
index 6ac764932ce4d7899869db833c1d62ce9938f2c0..dbde75d1815e666c74a61025900e4a1de09442a8 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -4,6 +4,7 @@
 - Add json-c to the download dependency script (add cmake as a requirement for that)
 - Choose between static or shared library for liblektor
 - Download the bakabase with obfuscation or not
+- Implicit types for queries with lkt
 
 # v2.1 (df74b85f)
 
diff --git a/src/main/lkt.c b/src/main/lkt.c
index 9a3eba1dfccc2c37cf0919b7b94f3e6c80ffa0ac..2bfe27ffa6bca8a0421dd5062d4075ab0ef4999d 100644
--- a/src/main/lkt.c
+++ b/src/main/lkt.c
@@ -55,26 +55,6 @@ static const char *LKT_QUEUE_DEFAULT[] = { "10" };
 
 /* Communication functions and fonction that interact with lektor stuff. */
 
-static inline int
-__string_is_lower(const char *str)
-{
-    while (*str != '\0') {
-        if (!islower(*str))
-            return 1;
-    }
-    return 0;
-}
-
-static inline int
-__string_is_upper(const char *str)
-{
-    while (*str != '\0') {
-        if (!isupper(*str))
-            return 1;
-    }
-    return 0;
-}
-
 static inline void
 __concat_strings(char *const res, size_t len, const char **tab, size_t count)
 {
@@ -105,39 +85,26 @@ lkt_get_query_type(struct cmd_args *args, char *const regex, size_t regex_len)
             return 0;
         }
 
-        /* Type ?== type */
-        else if (__string_is_upper(args->argv[0])) {
-#define kara_category(unused)
-#define kara_language(unused)
-#define kara_type(tp)                                               \
-if (STR_MATCH(tp, args->argv[0])) {                                 \
-    safe_snprintf(regex, regex_len, "type://%s", args->argv[0]);    \
-    return 0;                                                       \
+        /* Type ?== type OR Type ?== category OR Type ?== lang */
+#define kara_type(tp)                                                   \
+if (STR_MATCH(tp, args->argv[0])) {                                     \
+    safe_snprintf(regex, regex_len, "type://%s", args->argv[0]);        \
+    return 0;                                                           \
 }
-#include <lektor/database.def>
-#undef kara_category
-#undef kara_language
-#undef kara_type
-        }
-
-        /* Type ?== category OR Type ?== lang */
-        else if (__string_is_lower(args->argv[0])) {
-#define kara_type(unused)
 #define kara_category(ct)                                               \
 if (STR_MATCH(ct, args->argv[0])) {                                     \
     safe_snprintf(regex, regex_len, "category://%s", args->argv[0]);    \
     return 0;                                                           \
 }
-#define kara_language(lg)                                           \
-if (STR_MATCH(lg, args->argv[0])) {                                 \
-    safe_snprintf(regex, regex_len, "lang://%s", args->argv[0]);    \
-    return 0;                                                       \
+#define kara_language(lg)                                               \
+if (STR_MATCH(lg, args->argv[0])) {                                     \
+    safe_snprintf(regex, regex_len, "lang://%s", args->argv[0]);        \
+    return 0;                                                           \
 }
 #include <lektor/database.def>
 #undef kara_category
 #undef kara_language
 #undef kara_type
-        }
     }
 
     memset(regex, 0, regex_len * sizeof(char));