diff --git a/README.md b/README.md
index 557ee45..1de55ba 100644
--- a/README.md
+++ b/README.md
@@ -113,7 +113,7 @@ nscd::dbconfig:
## Usage
Generated puppet strings documentation with examples is available from
-https://voxpupuli.org/puppet-nscd/
+[REFERENCE.md](REFERENCE.md)
## Authors
diff --git a/REFERENCE.md b/REFERENCE.md
new file mode 100644
index 0000000..f7d6d2b
--- /dev/null
+++ b/REFERENCE.md
@@ -0,0 +1,212 @@
+# Reference
+
+
+
+## Table of Contents
+
+### Classes
+
+#### Public Classes
+
+* [`nscd`](#nscd): Configures /etc/ncsd.conf and controls nscd service.
+* [`nscd::config`](#nscd--config): == Class nscd::config Configures nscd.
+
+#### Private Classes
+
+* `nscd::install`: installs nscd
+* `nscd::service`: controls nscd service
+
+### Data types
+
+* [`Nscd::Database`](#Nscd--Database): hash of configuration in nscd.conf
+* [`Nscd::Database::Settings`](#Nscd--Database--Settings): all possible settings an nscd database can have
+
+## Classes
+
+### `nscd`
+
+nscd class.
+
+Note for each database at least the `enable-cache` key
+must be specified.
+
+#### Examples
+
+#####
+
+```puppet
+class{'nscd':
+ dbconfigs => {
+ 'passwd' => {'enable-cache' => true,
+ 'maximum-time-to-live' => 100,
+ },
+ 'group' => {'enable-cache' => true,
+ 'maximum-time-to-live' => 100,
+ },
+
+ }
+```
+
+#### Parameters
+
+The following parameters are available in the `nscd` class:
+
+* [`pkg_ensure`](#-nscd--pkg_ensure)
+* [`service_ensure`](#-nscd--service_ensure)
+* [`service_enable`](#-nscd--service_enable)
+* [`threads`](#-nscd--threads)
+* [`max_threads`](#-nscd--max_threads)
+* [`paranoia`](#-nscd--paranoia)
+* [`restart_interval`](#-nscd--restart_interval)
+* [`user`](#-nscd--user)
+* [`stat_user`](#-nscd--stat_user)
+* [`debug_level`](#-nscd--debug_level)
+* [`reload_count`](#-nscd--reload_count)
+* [`logfile`](#-nscd--logfile)
+* [`dbconfig`](#-nscd--dbconfig)
+
+##### `pkg_ensure`
+
+Data type: `Enum['present','absent','latest']`
+
+state of nscd package.
+
+Default value: `'present'`
+
+##### `service_ensure`
+
+Data type: `Boolean`
+
+state of nscd service ensure
+
+Default value: `true`
+
+##### `service_enable`
+
+Data type: `Boolean`
+
+state of nscd service enable
+
+Default value: `true`
+
+##### `threads`
+
+Data type: `Integer`
+
+number of threads.
+
+Default value: `5`
+
+##### `max_threads`
+
+Data type: `Integer`
+
+maximum number of threads.
+
+Default value: `32`
+
+##### `paranoia`
+
+Data type: `Boolean`
+
+enable internal restart mode.
+
+Default value: `false`
+
+##### `restart_interval`
+
+Data type: `Optional[Integer]`
+
+nscd internal restart interval
+
+Default value: `undef`
+
+##### `user`
+
+Data type: `String[1]`
+
+specify which user should run nscd
+
+Default value: `'root'`
+
+##### `stat_user`
+
+Data type: `Optional[String[1]]`
+
+which users can query statistics
+
+Default value: `undef`
+
+##### `debug_level`
+
+Data type: `Integer`
+
+debug level
+
+Default value: `0`
+
+##### `reload_count`
+
+Data type: `Integer`
+
+any many reload attempts to make
+
+Default value: `5`
+
+##### `logfile`
+
+Data type: `Optional[Stdlib::UnixPath]`
+
+specify a debug log file location.
+
+Default value: `undef`
+
+##### `dbconfig`
+
+Data type: `Nscd::Database`
+
+configuration for each of the passwd, group, hosts and service database.
+
+### `nscd::config`
+
+== Class nscd::config
+Configures nscd.
+
+## Data types
+
+### `Nscd::Database`
+
+hash of configuration in nscd.conf
+
+Alias of
+
+```puppet
+Struct[{
+ Optional['passwd'] => Nscd::Database::Settings,
+ Optional['group'] => Nscd::Database::Settings,
+ Optional['hosts'] => Nscd::Database::Settings,
+ Optional['services'] => Nscd::Database::Settings,
+ Optional['netgroup'] => Nscd::Database::Settings,
+ }]
+```
+
+### `Nscd::Database::Settings`
+
+all possible settings an nscd database can have
+
+Alias of
+
+```puppet
+Struct[{
+ 'enable-cache' => Boolean,
+ Optional['positive-time-to-live'] => Integer,
+ Optional['negative-time-to-live'] => Integer,
+ Optional['suggested-size'] => Integer,
+ Optional['check-files'] => Boolean,
+ Optional['persistent'] => Boolean,
+ Optional['shared'] => Boolean,
+ Optional['max-db-size'] => Integer,
+ Optional['auto-propagate'] => Boolean,
+ }]
+```
+
diff --git a/manifests/init.pp b/manifests/init.pp
index 7689f9b..492f5fa 100644
--- a/manifests/init.pp
+++ b/manifests/init.pp
@@ -22,15 +22,15 @@
# @param service_enable state of nscd service enable
# @param threads number of threads.
# @param max_threads maximum number of threads.
-# @prarm paranoia enable internal restart mode.
+# @param paranoia enable internal restart mode.
# @param restart_interval nscd internal restart interval
# @param user specify which user should run nscd
# @param stat_user which users can query statistics
# @param debug_level debug level
# @param reload_count any many reload attempts to make
# @param logfile specify a debug log file location.
-# @dbconfig configuration for each of the passwd, group, hosts and service database.
-
+# @param dbconfig configuration for each of the passwd, group, hosts and service database.
+#
class nscd (
Nscd::Database $dbconfig,
Enum['present','absent','latest'] $pkg_ensure = 'present',
diff --git a/manifests/install.pp b/manifests/install.pp
index daf6107..622a5bc 100644
--- a/manifests/install.pp
+++ b/manifests/install.pp
@@ -1,3 +1,6 @@
+# @summary installs nscd
+# @api private
+#
class nscd::install (
$pkg_ensure = $nscd::pkg_ensure
) {
diff --git a/manifests/service.pp b/manifests/service.pp
index 3b7fd44..0e0b20f 100644
--- a/manifests/service.pp
+++ b/manifests/service.pp
@@ -1,3 +1,6 @@
+# @summary controls nscd service
+# @api private
+#
class nscd::service (
$service_ensure = $nscd::service_ensure,
$service_enable = $nscd::service_enable,
diff --git a/types/database.pp b/types/database.pp
index 35a88d6..fe65165 100644
--- a/types/database.pp
+++ b/types/database.pp
@@ -1,3 +1,4 @@
+# @summary hash of configuration in nscd.conf
type Nscd::Database = Struct[
{
Optional['passwd'] => Nscd::Database::Settings,
diff --git a/types/database/settings.pp b/types/database/settings.pp
index 5be55d5..986a3de 100644
--- a/types/database/settings.pp
+++ b/types/database/settings.pp
@@ -1,3 +1,5 @@
+# @summary all possible settings an nscd database can have
+#
type Nscd::Database::Settings = Struct[
{
'enable-cache' => Boolean,