diff --git a/README b/README
index d0ca2fc..57f7cc2 100644
--- a/README
+++ b/README
@@ -1,58 +1,12 @@
-libkmod - linux kernel module handling library
-
-ABSTRACT
-========
-
-libkmod was created to allow programs to easily insert, remove and
-list modules, also checking its properties, dependencies and aliases.
-
-there is no shared/global context information and it can be used by
-multiple sites on a single program, also being able to be used from
-threads, although it's not thread safe (you must lock explicitly).
-
+kmod - Linux kernel module handling
 
 OVERVIEW
 ========
 
-Every user should create and manage it's own library context with:
+kmod is a set of tools to handle common tasks with Linux kernel modules like
+insert, remove, list, check properties, resolve dependencies and aliases.
 
-   struct kmod_ctx *ctx = kmod_new(kernel_dirname);
-   kmod_unref(ctx);
-
-
-Modules can be created with by various means:
-
-   struct kmod_module *mod;
-   int err;
-
-   err = kmod_module_new_from_path(ctx, path, &mod);
-   if (err < 0) {
-      /* code */
-   } else {
-      /* code */
-      kmod_module_unref(mod);
-   }
-
-   err = kmod_module_new_from_name(ctx, name, &mod);
-   if (err < 0) {
-      /* code */
-   } else {
-      /* code */
-      kmod_module_unref(mod);
-   }
-
-
-Or could be resolved from a known alias to a list of alternatives:
-
-   struct kmod_list *list, *itr;
-   int err;
-   err = kmod_module_new_from_lookup(ctx, alias, &list);
-   if (err < 0) {
-      /* code */
-   } else {
-      kmod_list_foreach(itr, list) {
-         struct kmod_module *mod = kmod_module_get_module(itr);
-         /* code */
-      }
-   }
-
+These tools are designed on top of libkmod, a library that is shipped with
+kmod. See libkmod/README for more details on this library and how to use it.
+The aim is to be compatible with tools, configurations and indexes from
+module-init-tools project.
