diff --git a/Cargo.toml b/Cargo.toml
index 27aa3ad..eaa07e6 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "ux-primitives"
-version = "0.2.1"
+version = "0.2.2"
 authors = ["Victor Dudochkin <dudochkin.victor@gmail.com>"]
 readme = "README.md"
 homepage = "https://angular-rust.github.io/ux-primitives"
diff --git a/README.md b/README.md
index 75e8813..41d3150 100644
--- a/README.md
+++ b/README.md
@@ -27,7 +27,20 @@
 [loc-badge]: https://img.shields.io/tokei/lines/github/angular-rust/ux-primitives?style=flat-square
 [loc-url]: https://github.com/angular-rust/ux-primitives
 
-UX Primitives is a powerful library for working with color and graphics. It is one of the main building blocks of the Angular Rust framework. This library is well organized and easy to use. 
+UX Primitives is a powerful library for working with color and graphics. 
+It is one of the main building blocks of the Angular Rust framework. 
+This library is well organized and easy to use. 
+
+The library provides the basic building blocks for creating games and regular applications. 
+It contains behavior definitions for game applications and basic structures.
+
+The basic fundamental entity for graphical applications such as games is color. 
+This library contains sufficient functionality for working with color, including storage, 
+processing and conversion between different color spaces.
+
+It also provides support for multiple color schemes and contains the OpenColor palette 
+for the convenience and higher quality of your applications.
+
 
 ## Quick Start
 
@@ -101,10 +114,6 @@ UX Primitives contain powerfull palette for easy of use and more professional lo
 - All colors will be beautiful in itself and harmonious
 - At the same brightness level, the perceived brightness will be constant
 
-## Available Colors
-
-![available colors](https://dudochkin-victor.github.io/assets/ux-primitives/open-color.svg)
-
 ## Learn More
 
 * [Manual, Docs, etc](https://angular-rust.github.io/)
diff --git a/src/foundation/box2d.rs b/src/foundation/box2d.rs
index 4a0ce05..db8d2ec 100644
--- a/src/foundation/box2d.rs
+++ b/src/foundation/box2d.rs
@@ -36,6 +36,8 @@ use super::Point;
     serde(bound(serialize = "T: Serialize", deserialize = "T: Deserialize<'de>"))
 )]
 pub struct Box2D<T> {
+    /// Represents min point
     pub min: Point<T>,
+    /// Represents max point
     pub max: Point<T>,
 }
diff --git a/src/foundation/colorschemes/analogous.rs b/src/foundation/colorschemes/analogous.rs
index 3fbd514..35b602d 100644
--- a/src/foundation/colorschemes/analogous.rs
+++ b/src/foundation/colorschemes/analogous.rs
@@ -23,6 +23,7 @@ impl Analogous {
         Self::with_parameters(primary, Some(10.0), Some(25.0))
     }
 
+    /// Generate Analogous scheme with specified parameters
     pub fn with_parameters(primary: Color, angle: Option<f32>, contrast: Option<f32>) -> Self {
         let mut instance = Self {
             colors: Vec::new(),
@@ -63,36 +64,44 @@ impl Analogous {
         }
     }
 
+    /// Retrieve angle of scheme
     pub fn angle(&self) -> f32 {
         self.angle
     }
 
+    /// Set the angle of scheme
     pub fn set_angle(&mut self, value: f32) {
         self.angle = value;
         self.generate();
     }
 
+    /// Retrieve contrast of scheme
     pub fn contrast(&self) -> f32 {
         self.contrast
     }
 
+    /// Set the contrast
     pub fn set_contrast(&mut self, value: f32) {
         self.contrast = value;
         self.generate();
     }
 
+    /// Retrieve count colors of scheme
     pub fn num_of_colors(&self) -> usize {
         self.colors.len()
     }
 
+    /// Set color by index
     pub fn get_color(&self, index: usize) -> Option<Color> {
         self.colors.get(index).copied()
     }
 
+    /// Retrieve primary color of scheme
     pub fn primary_color(&self) -> Color {
         self.primary_color
     }
 
+    /// Set the primary color of scheme
     pub fn set_primary_color(&mut self, value: Color) {
         self.primary_color = value;
         self.generate();
diff --git a/src/foundation/colorschemes/complementary.rs b/src/foundation/colorschemes/complementary.rs
index 70e2463..9f766da 100644
--- a/src/foundation/colorschemes/complementary.rs
+++ b/src/foundation/colorschemes/complementary.rs
@@ -14,6 +14,7 @@ pub struct Complementary {
 }
 
 impl Complementary {
+    /// Generate Complementary scheme with your color
     pub fn new(primary: Color) -> Self {
         let mut instance = Self {
             colors: Vec::new(),
@@ -68,18 +69,22 @@ impl Complementary {
         self.colors.push(supporting_complement.into());
     }
 
+    /// Retrieve count colors of scheme
     pub fn num_of_colors(&self) -> usize {
         self.colors.len()
     }
 
+    /// Set color by index
     pub fn get_color(&self, index: usize) -> Option<Color> {
         self.colors.get(index).copied()
     }
 
+    /// Retrieve primary color of scheme
     pub fn primary_color(&self) -> Color {
         self.primary_color
     }
 
+    /// Set the primary color of scheme
     pub fn set_primary_color(&mut self, val: Color) {
         self.primary_color = val;
         self.generate();
diff --git a/src/foundation/colorschemes/compound.rs b/src/foundation/colorschemes/compound.rs
index 83e9456..485ff92 100644
--- a/src/foundation/colorschemes/compound.rs
+++ b/src/foundation/colorschemes/compound.rs
@@ -12,6 +12,7 @@ pub struct Compound {
 }
 
 impl Compound {
+    /// Generate Compound scheme with your color
     pub fn new(primary: Color) -> Self {
         let mut instance = Self {
             colors: Vec::new(),
@@ -53,18 +54,22 @@ impl Compound {
         self.colors.push(c5.into());
     }
 
+    /// Retrieve count colors of scheme
     pub fn num_of_colors(&self) -> usize {
         self.colors.len()
     }
 
+    /// Set color by index
     pub fn get_color(&self, index: usize) -> Option<Color> {
         self.colors.get(index).copied()
     }
 
+    /// Retrieve primary color of scheme
     pub fn primary_color(&self) -> Color {
         self.primary_color
     }
 
+    /// Set the primary color of scheme
     pub fn set_primary_color(&mut self, val: Color) {
         self.primary_color = val;
         self.generate();
diff --git a/src/foundation/colorschemes/flipped_compound.rs b/src/foundation/colorschemes/flipped_compound.rs
index 4e81a34..9ff4fb7 100644
--- a/src/foundation/colorschemes/flipped_compound.rs
+++ b/src/foundation/colorschemes/flipped_compound.rs
@@ -13,6 +13,7 @@ pub struct FlippedCompound {
 }
 
 impl FlippedCompound {
+    /// Generate FlippedCompound scheme with your color
     pub fn new(primary: Color) -> Self {
         let mut instance = Self {
             colors: Vec::new(),
@@ -53,18 +54,22 @@ impl FlippedCompound {
         self.colors.push(c5.into());
     }
 
+    /// Retrieve count colors of scheme
     pub fn num_of_colors(&self) -> usize {
         self.colors.len()
     }
 
+    /// Set color by index
     pub fn get_color(&self, index: usize) -> Option<Color> {
         self.colors.get(index).copied()
     }
 
+    /// Retrieve primary color of scheme
     pub fn primary_color(&self) -> Color {
         self.primary_color
     }
 
+    /// Set the primary color of scheme
     pub fn set_primary_color(&mut self, val: Color) {
         self.primary_color = val;
         self.generate();
diff --git a/src/foundation/colorschemes/monochrome.rs b/src/foundation/colorschemes/monochrome.rs
index a04befa..3deccb7 100644
--- a/src/foundation/colorschemes/monochrome.rs
+++ b/src/foundation/colorschemes/monochrome.rs
@@ -15,6 +15,7 @@ pub struct Monochrome {
 }
 
 impl Monochrome {
+    /// Generate Monochrome scheme with your color
     pub fn new(primary: Color) -> Self {
         let mut instance = Self {
             colors: Vec::new(),
@@ -50,18 +51,22 @@ impl Monochrome {
         self.colors.push(c4.into());
     }
 
+    /// Retrieve count colors of scheme
     pub fn num_of_colors(&self) -> usize {
         self.colors.len()
     }
 
+    /// Set color by index
     pub fn get_color(&self, index: usize) -> Option<Color> {
         self.colors.get(index).copied()
     }
 
+    /// Retrieve primary color of scheme
     pub fn primary_color(&self) -> Color {
         self.primary_color
     }
 
+    /// Set the primary color of scheme
     pub fn set_primary_color(&mut self, val: Color) {
         self.primary_color = val;
         self.generate();
diff --git a/src/foundation/colorschemes/split_complementary.rs b/src/foundation/colorschemes/split_complementary.rs
index ec3bde5..a80e725 100644
--- a/src/foundation/colorschemes/split_complementary.rs
+++ b/src/foundation/colorschemes/split_complementary.rs
@@ -15,6 +15,7 @@ pub struct SplitComplementary {
 }
 
 impl SplitComplementary {
+    /// Generate SplitComplementary scheme with your color
     pub fn new(primary: Color) -> Self {
         let mut instance = Self {
             colors: Vec::new(),
@@ -38,18 +39,22 @@ impl SplitComplementary {
         self.colors.push(c2.into());
     }
 
+    /// Retrieve count colors of scheme
     pub fn num_of_colors(&self) -> usize {
         self.colors.len()
     }
 
+    /// Set color by index
     pub fn get_color(&self, index: usize) -> Option<Color> {
         self.colors.get(index).copied()
     }
 
+    /// Retrieve primary color of scheme
     pub fn primary_color(&self) -> Color {
         self.primary_color
     }
 
+    /// Set the primary color of scheme
     pub fn set_primary_color(&mut self, val: Color) {
         self.primary_color = val;
         self.generate();
diff --git a/src/foundation/colorschemes/tetrad.rs b/src/foundation/colorschemes/tetrad.rs
index 99286c1..2d3c6e3 100644
--- a/src/foundation/colorschemes/tetrad.rs
+++ b/src/foundation/colorschemes/tetrad.rs
@@ -21,6 +21,7 @@ impl Tetrad {
         Self::with_parameters(primary, Some(90.0), Some(false))
     }
 
+    /// Generate Analogous scheme with your parameters
     pub fn with_parameters(primary: Color, angle: Option<f32>, alt: Option<bool>) -> Self {
         let mut instance = Self {
             colors: Vec::new(),
@@ -73,36 +74,44 @@ impl Tetrad {
         self.colors.push(c3.into());
     }
 
+    /// Retrieve angle of scheme
     pub fn angle(&self) -> f32 {
         self.angle
     }
 
+    /// Set the angle of scheme
     pub fn set_angle(&mut self, value: f32) {
         self.angle = value;
         self.generate();
     }
 
+    /// Check the scheme is alternative
     pub fn alt(&self) -> bool {
         self.alt
     }
 
+    /// Set the scheme type
     pub fn set_alt(&mut self, val: bool) {
         self.alt = val;
         self.generate();
     }
 
+    /// Retrieve count colors of scheme
     pub fn num_of_colors(&self) -> usize {
         self.colors.len()
     }
 
+    /// Set color by index
     pub fn get_color(&self, index: usize) -> Option<Color> {
         self.colors.get(index).copied()
     }
 
+    /// Retrieve primary color of scheme
     pub fn primary_color(&self) -> Color {
         self.primary_color
     }
 
+    /// Set the primary color of scheme
     pub fn set_primary_color(&mut self, val: Color) {
         self.primary_color = val;
         self.generate();
diff --git a/src/foundation/colorschemes/triad.rs b/src/foundation/colorschemes/triad.rs
index 7d0f5be..4cbe3a7 100644
--- a/src/foundation/colorschemes/triad.rs
+++ b/src/foundation/colorschemes/triad.rs
@@ -20,6 +20,7 @@ impl Triad {
         Self::with_parameters(primary, Some(120.0))
     }
 
+    /// Generate Triad scheme with your parameters
     pub fn with_parameters(primary: Color, angle: Option<f32>) -> Self {
         let mut instance = Self {
             colors: Vec::new(),
@@ -31,10 +32,12 @@ impl Triad {
         instance
     }
 
+    /// Retrieve angle of scheme
     pub fn angle(&self) -> f32 {
         self.angle
     }
 
+    /// Set the angle of scheme
     pub fn set_angle(&mut self, value: f32) {
         self.angle = value;
         self.generate();
@@ -55,18 +58,22 @@ impl Triad {
         self.colors.push(c2.into());
     }
 
+    /// Retrieve count colors of scheme
     pub fn num_of_colors(&self) -> usize {
         self.colors.len()
     }
 
+    /// Set color by index
     pub fn get_color(&self, index: usize) -> Option<Color> {
         self.colors.get(index).copied()
     }
 
+    /// Retrieve primary color of scheme
     pub fn primary_color(&self) -> Color {
         self.primary_color
     }
 
+    /// Set the primary color of scheme
     pub fn set_primary_color(&mut self, val: Color) {
         self.primary_color = val;
         self.generate();
diff --git a/src/foundation/colorspace/adjust.rs b/src/foundation/colorspace/adjust.rs
index 6e700a2..6cf61b0 100644
--- a/src/foundation/colorspace/adjust.rs
+++ b/src/foundation/colorspace/adjust.rs
@@ -2,64 +2,96 @@ use super::prelude::*;
 
 use super::*;
 
+/// Defines getter for the color hue component
 pub trait GetHue {
+    /// Retrieve hue component
     fn get_hue(self) -> Float;
 }
+
+/// Defines setter for the color hue component
 pub trait SetHue {
+    /// Set the hue component
     fn set_hue(&mut self, hue: Float) -> Self;
 }
+
+/// Defines setter and getters for the color hue component
 pub trait HasHue: Clone + Copy + GetHue + SetHue {}
 
+
+/// Defines the color saturation functionality
 pub trait HasSaturation: Clone + Copy {
+    /// Retrieve saturation
     fn get_saturation(self) -> Float;
+    /// Set the saturation
     fn set_saturation(&mut self, saturation: Float) -> Self;
 }
 
+/// Defines getters for the chroma radial saturation functionality
 pub trait GetRadialSaturation:
     FromColor<HslColor> + IntoColor<HslColor> + FromColor<HsvColor> + IntoColor<HsvColor>
 {
+    /// Retrieve hsl saturation
     fn get_hsl_saturation(self) -> Float;
+    /// Set hsv saturation
     fn get_hsv_saturation(self) -> Float;
 }
+
+/// Defines setters for the chroma radial saturation functionality
 pub trait SetRadialSaturation:
     FromColor<HslColor> + IntoColor<HslColor> + FromColor<HsvColor> + IntoColor<HsvColor>
 {
+    /// Retrieve hsl saturation
     fn set_hsl_saturation(&mut self, saturation: Float) -> Self;
+    /// Set hsv saturation
     fn set_hsv_saturation(&mut self, saturation: Float) -> Self;
 }
 
+/// Defines the color lighten/darken functionality
 pub trait Lighten: Sized {
+    /// Lighten the color with delta
     fn lighten(self, delta: Float) -> Self;
+    /// Darken the color with delta
     fn darken(self, delta: Float) -> Self {
         self.lighten(-delta)
     }
 }
 
+/// Defines the color hue adjustment functionality
 pub trait AdjustHue: Sized {
+    /// Adjust hue component of color with delta
     fn adjust_hue(self, delta: Float) -> Self;
+    /// Rotate hue component with 180 degrees
     fn complement(self) -> Self {
         self.adjust_hue(180.)
     }
 }
 
+/// Defines the color saturation functionality
 pub trait Saturate: Sized {
+    /// Saturate the color with delta
     fn saturate(self, delta: Float) -> Self;
+    /// Desaturate the color with delta
     fn desaturate(self, delta: Float) -> Self {
         self.saturate(-delta)
     }
 }
 
+/// Defines the color grayscale adjustment functionality
 pub trait Grayscale: Saturate {
+    /// Desaturate the color to grayscale
     fn grayscale(self) -> Self {
         self.saturate(-100.)
     }
 }
 impl<C: Saturate> Grayscale for C {}
 
+/// Defines the color inversion functionality
 pub trait Invert: Sized {
+    /// Invert color
     fn invert(self) -> Self;
 }
 
+/// Defines the color adjustment functionality
 pub trait Adjust: Lighten + AdjustHue + Saturate + Grayscale {}
 impl<C: Lighten + AdjustHue + Saturate + Grayscale> Adjust for C {}
 
diff --git a/src/foundation/colorspace/alpha.rs b/src/foundation/colorspace/alpha.rs
index 9260f06..b66c7d3 100644
--- a/src/foundation/colorspace/alpha.rs
+++ b/src/foundation/colorspace/alpha.rs
@@ -2,21 +2,35 @@ use super::prelude::*;
 
 use super::*;
 
+/// Defines get alpha getters functionality
 pub trait GetAlpha<C> {
+    /// Retrieve the alpha component
     fn get_alpha(&self) -> Float;
+    /// Retrieve the alpha component as opacity
     fn get_opacity(&self) -> Float;
+    /// Retrieve the alpha component as transparency
     fn get_transparency(&self) -> Float;
 }
 
+/// Defines alpha setters functionality
 pub trait SetAlpha<C> {
+    /// Set the alpha component
     fn set_alpha(&mut self, alpha: Float) -> &Self;
+    /// Set the alpha component as opacity
     fn set_opacity(&mut self, opacity: Float) -> &Self;
+    /// Set the alpha component as transparency
     fn set_transparency(&mut self, transparency: Float) -> &Self;
 }
 
+/// Defines alpha functionality
 pub trait HasAlpha<C>: GetAlpha<C> + SetAlpha<C> {
+    /// Retrieve the color component
     fn get_color(&self) -> C;
+
+    /// Set the color component
     fn set_color(&mut self, color: C) -> &Self;
+    
+    /// Retrieve the color and aplha components
     fn split(&self) -> (C, Float)
     where
         Self: Sized,
@@ -25,17 +39,24 @@ pub trait HasAlpha<C>: GetAlpha<C> + SetAlpha<C> {
     }
 }
 
+/// Defines alpha adjustment functionality
 pub trait AdjustAlpha<C>: Clone + SetAlpha<C> {
+    
+    /// Set the alpha component
     fn alpha(&self, alpha: Float) -> Self {
         let mut color = self.clone();
         color.set_alpha(alpha);
         color
     }
+
+    /// Set the opacity
     fn opacity(&self, opacity: Float) -> Self {
         let mut color = self.clone();
         color.set_opacity(opacity);
         color
     }
+
+    /// Set the transparency
     fn transparency(&self, transparency: Float) -> Self {
         let mut color = self.clone();
         color.set_transparency(transparency);
@@ -43,6 +64,8 @@ pub trait AdjustAlpha<C>: Clone + SetAlpha<C> {
     }
 }
 
+
+/// Represents the color with aplha component
 #[derive(Clone, Copy, Debug)]
 pub struct Alpha<C: ColorSpace> {
     color: C,
@@ -50,6 +73,7 @@ pub struct Alpha<C: ColorSpace> {
 }
 
 impl<C: ColorSpace> Alpha<C> {
+    /// Create color with alpha
     pub fn new(color: C, alpha: Float) -> Self {
         Self { color, alpha }
     }
diff --git a/src/foundation/colorspace/base.rs b/src/foundation/colorspace/base.rs
index 548fb32..81aa668 100644
--- a/src/foundation/colorspace/base.rs
+++ b/src/foundation/colorspace/base.rs
@@ -6,18 +6,22 @@ use super::prelude::*;
 
 use super::*;
 
-// Color components was crate only available "pub(crate) red: ..."
-// i made it public, coz i use it in dx crate. It need to deal with it
+/// Basic color representation
 #[derive(Clone, Copy, PartialEq, Debug)] // Eq, Hash 
 #[repr(C)]
 pub struct Color {
+    /// Red component
     pub red: Float,
+    /// Green component
     pub green: Float,
+    /// Blue component
     pub blue: Float,
+    /// Alpha component
     pub alpha: Float,
 }
 
 impl Color {
+    /// Create color with floating point components
     pub fn new(red: Float, green: Float, blue: Float, alpha: Float) -> Self {
         Color {
             red,
@@ -27,6 +31,7 @@ impl Color {
         }
     }
 
+    /// Create solid color with byte components
     pub fn rgb(red: u8, green: u8, blue: u8) -> Self {
         Self::new(
             red as Float / 255.,
@@ -36,6 +41,7 @@ impl Color {
         )
     }
 
+    /// Create color with byte components
     pub fn rgba(red: u8, green: u8, blue: u8, alpha: u8) -> Self {
         Self::new(
             red as Float / 255.,
@@ -45,51 +51,61 @@ impl Color {
         )
     }
 
+    /// Create solid color with using hsl color space
     pub fn hsl(hue: Float, saturation: Float, lightness: Float) -> Self {
         Self::from_color(HslColor::new(hue, saturation, lightness))
     }
 
+    /// Create solid color with using hsl color space and alpha component
     pub fn hsla(hue: Float, saturation: Float, lightness: Float, alpha: Float) -> Self {
         let mut color = Self::from_color(HslColor::new(hue, saturation, lightness));
         color.alpha = alpha;
         color
     }
 
+    /// Create solid color with using hsv color space
     pub fn hsv(hue: Float, saturation: Float, value: Float) -> Self {
         Self::from_color(HslColor::new(hue, saturation, value))
     }
 
+    /// Create solid color with using hsv color space and alpha component
     pub fn hsva(hue: Float, saturation: Float, value: Float, alpha: Float) -> Self {
         let mut color = Self::from_color(HslColor::new(hue, saturation, value));
         color.alpha = alpha;
         color
     }
 
+    /// Create solid color with using cmyk color space
     pub fn cmyk(cyan: Float, magenta: Float, yellow: Float, key: Float) -> Self {
         Self::from_color(CmykColor::new(cyan, magenta, yellow, key))
     }
-    //noinspection SpellCheckingInspection
+    
+    /// Create solid color with using cmyk color space and alpha component
     pub fn cmyka(cyan: Float, magenta: Float, yellow: Float, key: Float, alpha: Float) -> Self {
         let mut color = Self::from_color(CmykColor::new(cyan, magenta, yellow, key));
         color.alpha = alpha;
         color
     }
 
+    /// Create solid color with using cmy color space
     pub fn cmy(cyan: Float, magenta: Float, yellow: Float) -> Self {
         Self::from_color(CmyColor::new(cyan, magenta, yellow))
     }
-    //noinspection SpellCheckingInspection
+    
+    /// Create solid color with using cmy color space and alpha component
     pub fn cmya(cyan: Float, magenta: Float, yellow: Float, alpha: Float) -> Self {
         let mut color = Self::from_color(CmyColor::new(cyan, magenta, yellow));
         color.alpha = alpha;
         color
     }
 
+    /// Create solid color with using xyz color space
     #[cfg(feature = "experimental")]
     pub fn xyz(x: Float, y: Float, z: Float) -> Self {
         Self::from_color(XyzColor::new(x, y, z))
     }
-    //noinspection SpellCheckingInspection
+    
+    /// Create solid color with using xyz color space and alpha component
     #[cfg(feature = "experimental")]
     pub fn xyza(x: Float, y: Float, z: Float, alpha: Float) -> Self {
         let mut color = Self::from_color(XyzColor::new(x, y, z));
@@ -97,11 +113,13 @@ impl Color {
         color
     }
 
+    /// Create solid color with using lab color space
     #[cfg(feature = "experimental")]
     pub fn lab(l: Float, a: Float, b: Float) -> Self {
         Self::from_color(XyzColor::new(l, a, b))
     }
-    //noinspection SpellCheckingInspection
+    
+    /// Create solid color with using lab color space and alpha component
     #[cfg(feature = "experimental")]
     pub fn laba(l: Float, a: Float, b: Float, alpha: Float) -> Self {
         let mut color = Self::from_color(XyzColor::new(l, a, b));
@@ -111,42 +129,49 @@ impl Color {
 
     // EMULATE creation of unicolor::Color enum
 
+    /// Create solid color with using rgb color space
     #[allow(non_snake_case)]
     #[deprecated]
     pub fn RGB(red: u8, green: u8, blue: u8) -> Self {
         Self::rgb(red, green, blue)
     }
 
+    /// Create solid color with using lab rgb space and alpha component
     #[allow(non_snake_case)]
     #[deprecated]
     pub fn RGBA(red: u8, green: u8, blue: u8, alpha: u8) -> Self {
         Self::rgba(red, green, blue, alpha)
     }
 
+    /// Create solid color with using hsl color space
     #[allow(non_snake_case)]
     #[deprecated]
     pub fn HSL(hue: Float, saturation: Float, lightness: Float) -> Self {
         Self::hsl(hue, saturation, lightness)
     }
 
+    /// Create solid color with using hsv color space
     #[allow(non_snake_case)]
     #[deprecated]
     pub fn HSV(hue: Float, saturation: Float, value: Float) -> Self {
         Self::hsv(hue, saturation, value)
     }
 
+    /// Create solid color with using cmyk color space
     #[allow(non_snake_case)]
     #[deprecated]
     pub fn CMYK(cyan: Float, magenta: Float, yellow: Float, key: Float) -> Self {
         Self::cmyk(cyan, magenta, yellow, key)
     }
 
+    /// Create solid color with using cmy color space
     #[allow(non_snake_case)]
     #[deprecated]
     pub fn CMY(cyan: Float, magenta: Float, yellow: Float) -> Self {
         Self::cmy(cyan, magenta, yellow)
     }
 
+    /// Create solid color with using xyz color space
     #[cfg(feature = "experimental")]
     #[allow(non_snake_case)]
     #[deprecated]
@@ -154,6 +179,7 @@ impl Color {
         Self::xyz(x, y, z)
     }
 
+    /// Create solid color with using lab color space
     #[cfg(feature = "experimental")]
     #[allow(non_snake_case)]
     #[deprecated]
@@ -174,10 +200,15 @@ impl default::Default for Color {
     }
 }
 
+
+/// Represents color error
 #[derive(Debug)]
 pub enum ColorError {
+    /// Percentage overflow error
     PercentageOverflow,
+    /// Degree overflow error
     DegreeOverflow,
+    /// Unimplementer error
     Unimplemented,
 }
 
diff --git a/src/foundation/colorspace/cmy.rs b/src/foundation/colorspace/cmy.rs
index 087dea0..82d8617 100644
--- a/src/foundation/colorspace/cmy.rs
+++ b/src/foundation/colorspace/cmy.rs
@@ -1,11 +1,15 @@
 use super::*;
 use std::fmt;
 
+/// Cmy color representation
 #[derive(Clone, Copy, PartialEq, Debug)]
 pub struct CmyColor {
+    /// Cyan component
     pub cyan: Float,
+    /// Magenta component
     pub magenta: Float,
-    pub yellow: Float, // yellow
+    /// Yellow component
+    pub yellow: Float,
 }
 
 impl fmt::Display for CmyColor {
@@ -19,6 +23,7 @@ impl fmt::Display for CmyColor {
 }
 
 impl CmyColor {
+    /// Create new Cmy color with parameters
     pub fn new(cyan: Float, magenta: Float, yellow: Float) -> Self {
         Self {
             cyan,
diff --git a/src/foundation/colorspace/cmyk.rs b/src/foundation/colorspace/cmyk.rs
index e490b72..6772cd3 100644
--- a/src/foundation/colorspace/cmyk.rs
+++ b/src/foundation/colorspace/cmyk.rs
@@ -1,15 +1,21 @@
 use super::{Color, Float};
 use std::fmt;
 
+/// Cmyk color representation
 #[derive(Clone, Copy, PartialEq, Debug)]
 pub struct CmykColor {
+    /// Cyan component
     pub cyan: Float,
+    /// Magenta component
     pub magenta: Float,
+    /// Yellow component
     pub yellow: Float,
+    /// Key component
     pub key: Float,
 }
 
 impl CmykColor {
+    /// Create new Cmyk color with parameters
     pub fn new(cyan: Float, magenta: Float, yellow: Float, key: Float) -> Self {
         Self {
             cyan,
diff --git a/src/foundation/colorspace/convert.rs b/src/foundation/colorspace/convert.rs
index a777cc6..ddfb60c 100644
--- a/src/foundation/colorspace/convert.rs
+++ b/src/foundation/colorspace/convert.rs
@@ -1,10 +1,14 @@
 use super::*;
 
+/// Defines from-color converion functionality
 pub trait FromColor<Fr> {
+    /// Convert from color
     fn from_color(color: Fr) -> Self;
 }
 
+/// Defines into-color converion functionality
 pub trait IntoColor<To> {
+    /// Convert into color
     fn into_color(self) -> To;
 }
 
diff --git a/src/foundation/colorspace/hsl.rs b/src/foundation/colorspace/hsl.rs
index 89cc29c..a9f0af4 100644
--- a/src/foundation/colorspace/hsl.rs
+++ b/src/foundation/colorspace/hsl.rs
@@ -1,14 +1,19 @@
 use super::{utils, Color, ColorError, Float};
 use std::fmt;
 
+/// Hsl color representation
 #[derive(Clone, Copy, PartialEq, Debug)]
 pub struct HslColor {
+    /// Hue component
     pub hue: Float,
+    /// Saturation component
     pub saturation: Float,
+    /// Lightness component
     pub lightness: Float,
 }
 
 impl HslColor {
+    /// Create new Hsl color with parameters
     pub fn new(h: Float, s: Float, l: Float) -> Self {
         Self {
             hue: h % 360.0,
diff --git a/src/foundation/colorspace/hsv.rs b/src/foundation/colorspace/hsv.rs
index 3acc2c1..01bb796 100644
--- a/src/foundation/colorspace/hsv.rs
+++ b/src/foundation/colorspace/hsv.rs
@@ -2,14 +2,19 @@ use super::{utils, Color, ColorError, Float};
 use std::fmt;
 use utils::{hue_bound, percentage_to_fraction};
 
+/// Hsv color representation
 #[derive(Clone, Copy, PartialEq, Debug)]
 pub struct HsvColor {
+    /// Hue component
     pub hue: Float,
+    /// Saturation component
     pub saturation: Float,
+    /// Value component
     pub value: Float,
 }
 
 impl HsvColor {
+    /// Create new Hsv color with parameters
     pub fn new(hue: Float, saturation: Float, value: Float) -> Self {
         Self {
             hue: hue_bound(hue),
diff --git a/src/foundation/colorspace/lab.rs b/src/foundation/colorspace/lab.rs
index b2a9bdb..815412d 100644
--- a/src/foundation/colorspace/lab.rs
+++ b/src/foundation/colorspace/lab.rs
@@ -3,10 +3,14 @@
 use super::{Color, ColorError};
 use std::fmt;
 
+/// Lab color representation
 #[derive(Clone, Copy, PartialEq, Debug)]
 pub struct LabColor {
+    /// L component
     pub l: f64,
+    /// A component
     pub a: f64,
+    /// B component
     pub b: f64,
 }
 
diff --git a/src/foundation/colorspace/marker.rs b/src/foundation/colorspace/marker.rs
index 959854f..205c681 100644
--- a/src/foundation/colorspace/marker.rs
+++ b/src/foundation/colorspace/marker.rs
@@ -1,9 +1,18 @@
 use super::*;
 
+/// Defines ColorTransition marker
 pub trait ColorTransition: Clone + Copy + From<Color> + Into<Color> {}
+
+/// Defines ColorSpace marker
 pub trait ColorSpace: ColorTransition {}
+
+/// Defines NonRgbSpace marker
 pub trait NonRgbSpace: ColorTransition {}
+
+/// Defines NonRadialSpace marker
 pub trait NonRadialSpace: ColorTransition {}
+
+/// Defines NonSaturationSpace marker
 pub trait NonSaturationSpace: ColorTransition {}
 
 impl ColorTransition for Color {}
diff --git a/src/foundation/colorspace/mod.rs b/src/foundation/colorspace/mod.rs
index c864425..e8e836a 100644
--- a/src/foundation/colorspace/mod.rs
+++ b/src/foundation/colorspace/mod.rs
@@ -69,6 +69,7 @@ pub use rgba::RgbaColor;
 #[cfg(feature = "experimental")]
 pub use xyz::XyzColor;
 
+/// Module with most usable functionality
 pub mod prelude {
     pub use super::alpha::*;
     pub use super::adjust::*;
diff --git a/src/foundation/colorspace/rgb.rs b/src/foundation/colorspace/rgb.rs
index 9be8041..b340d4a 100644
--- a/src/foundation/colorspace/rgb.rs
+++ b/src/foundation/colorspace/rgb.rs
@@ -1,14 +1,19 @@
 use super::{Color, Float};
 use std::fmt;
 
+/// Rgb color representation with u8 components
 #[derive(Clone, Copy, PartialEq, Eq, Debug, Hash)]
 pub struct RgbColor {
+    /// Red component
     pub red: u8,
+    /// Green component
     pub green: u8,
+    /// Blue component
     pub blue: u8,
 }
 
 impl RgbColor {
+    /// Create new Rgb color with parameters
     pub fn new(red: u8, green: u8, blue: u8) -> Self {
         Self { red, green, blue }
     }
diff --git a/src/foundation/colorspace/rgba.rs b/src/foundation/colorspace/rgba.rs
index f2f6df9..dfbad80 100644
--- a/src/foundation/colorspace/rgba.rs
+++ b/src/foundation/colorspace/rgba.rs
@@ -1,11 +1,16 @@
 use super::*;
 use std::fmt;
 
+/// Rgba color representation with u8 components
 #[derive(Clone, Copy, PartialEq, Eq, Debug, Hash)]
 pub struct RgbaColor {
+    /// Red component
     pub red: u8,
+    /// Green component
     pub green: u8,
+    /// Blue component
     pub blue: u8,
+    /// Alpha component
     pub alpha: u8,
 }
 
@@ -20,6 +25,7 @@ impl fmt::Display for RgbaColor {
 }
 
 impl RgbaColor {
+    /// Create new Rgba color with parameters
     pub fn new(red: u8, green: u8, blue: u8, alpha: u8) -> Self {
         Self {
             red,
diff --git a/src/foundation/colorspace/round.rs b/src/foundation/colorspace/round.rs
index 679e002..2d6ec88 100644
--- a/src/foundation/colorspace/round.rs
+++ b/src/foundation/colorspace/round.rs
@@ -2,7 +2,9 @@ use super::prelude::*;
 
 use super::*;
 
+/// Defines round color components functionality
 pub trait Round {
+    /// Create color with rounded values
     fn round(self) -> Self;
 }
 
diff --git a/src/foundation/colorspace/to_hex_string.rs b/src/foundation/colorspace/to_hex_string.rs
index 5c44947..54ef8a6 100644
--- a/src/foundation/colorspace/to_hex_string.rs
+++ b/src/foundation/colorspace/to_hex_string.rs
@@ -1,6 +1,8 @@
 use super::*;
 
+/// Defines conversion to hex sting functionality
 pub trait ToHexString {
+    /// Represents a color as a hexadecimal string
     fn to_hex_string(&self) -> String;
 }
 
diff --git a/src/foundation/colorspace/xyz.rs b/src/foundation/colorspace/xyz.rs
index fd59e91..a867c75 100644
--- a/src/foundation/colorspace/xyz.rs
+++ b/src/foundation/colorspace/xyz.rs
@@ -2,6 +2,7 @@
 
 use super::{Color, ColorError, Float};
 
+/// Xyz color representation
 #[derive(Clone, Copy, PartialEq, Debug)]
 pub struct XyzColor {
     pub x: Float,
@@ -10,6 +11,7 @@ pub struct XyzColor {
 }
 
 impl XyzColor {
+    /// Create new Xyz color with parameters
     pub fn new(x: Float, y: Float, z: Float) -> Self {
         Self { x, y, z }
     }
diff --git a/src/foundation/image.rs b/src/foundation/image.rs
index 2206a94..21b4b39 100644
--- a/src/foundation/image.rs
+++ b/src/foundation/image.rs
@@ -3,12 +3,19 @@ use bytes::Bytes;
 /// Describes pixel format properties
 #[derive(Copy, Clone, Debug)]
 pub enum PixelFormat {
+    /// Invalid pixel format
     Invalid,
+    /// Represents ARgb32 format
     ARgb32,
+    /// Represents Rgb24 format
     Rgb24,
+    /// Represents A8 format
     A8,
+    /// Represents A1 format
     A1,
+    /// Represents Rgb16_565 format
     Rgb16_565,
+    /// Represents Rgb30 format
     Rgb30,
 }
 
@@ -21,13 +28,18 @@ impl Default for PixelFormat {
 /// Represens image data with parameters
 #[derive(Debug, Clone)]
 pub struct ImageData {
+    /// Image format
     pub format: PixelFormat,
+    /// Image width
     pub width: u32,
+    /// Image height
     pub height: u32,
+    /// Image data
     pub data: Bytes,
 }
 
 impl ImageData {
+    /// Create image data with params
     pub fn new(format: PixelFormat, width: u32, height: u32, data: Bytes) -> Self {
         Self {
             format,
diff --git a/src/foundation/rect.rs b/src/foundation/rect.rs
index d91edcd..4615966 100644
--- a/src/foundation/rect.rs
+++ b/src/foundation/rect.rs
@@ -35,7 +35,9 @@ use super::{Box2D, Point, Size};
     serde(bound(serialize = "T: Serialize", deserialize = "T: Deserialize<'de>"))
 )]
 pub struct Rect<T> {
+    /// Origin of rectangle
     pub origin: Point<T>,
+    /// Size of rectangle
     pub size: Size<T>,
 }
 
@@ -110,6 +112,7 @@ impl<T> Rect<T>
 where
     T: Copy + Add<T, Output = T>,
 {
+    /// Retrieve origin of rectangle
     #[inline]
     pub fn min(&self) -> Point<T> {
         self.origin
@@ -120,41 +123,49 @@ where
     //     self.origin + self.size
     // }
 
+    /// Retrieve maximum x of rectangle
     #[inline]
     pub fn max_x(&self) -> T {
         self.origin.x + self.size.width
     }
 
+    /// Retrieve minimum x of rectangle
     #[inline]
     pub fn min_x(&self) -> T {
         self.origin.x
     }
 
+    /// Retrieve maximum y of rectangle
     #[inline]
     pub fn max_y(&self) -> T {
         self.origin.y + self.size.height
     }
 
+    /// Retrieve minimum y of rectangle
     #[inline]
     pub fn min_y(&self) -> T {
         self.origin.y
     }
 
+    /// Retrieve rectangle width
     #[inline]
     pub fn width(&self) -> T {
         self.size.width
     }
 
+    /// Retrieve rectangle height
     #[inline]
     pub fn height(&self) -> T {
         self.size.height
     }
 
+    /// Retrieve x range of rectangle
     #[inline]
     pub fn x_range(&self) -> Range<T> {
         self.min_x()..self.max_x()
     }
 
+    /// Retrieve y range of rectangle
     #[inline]
     pub fn y_range(&self) -> Range<T> {
         self.min_y()..self.max_y()
@@ -214,6 +225,7 @@ impl<T> Rect<T>
 where
     T: Copy + Add<T, Output = T> + Sub<T, Output = T>,
 {
+    /// Create inflated rectangle
     #[inline]
     #[must_use]
     pub fn inflate(&self, width: T, height: T) -> Self {
@@ -351,6 +363,7 @@ where
 // }
 
 impl<T> Rect<T> {
+    /// Create scaled rectangle
     #[inline]
     pub fn scale<S: Copy>(&self, x: S, y: S) -> Self
     where
@@ -364,6 +377,7 @@ impl<T> Rect<T> {
 }
 
 impl<T: Copy + Mul<T, Output = T>> Rect<T> {
+    /// Retrieve area of rectangle
     #[inline]
     pub fn area(&self) -> T {
         self.size.area()
diff --git a/src/foundation/size2d.rs b/src/foundation/size2d.rs
index 3e2c1bd..f54b5d5 100644
--- a/src/foundation/size2d.rs
+++ b/src/foundation/size2d.rs
@@ -255,23 +255,7 @@ impl<T: Copy> Size2D<T> {
         self.width * self.height
     }
 
-    // /// Linearly interpolate each component between this size and another size.
-    // ///
-    // /// # Example
-    // ///
-    // /// ```rust
-    // /// use euclid::size2;
-    // /// use euclid::default::Size2D;
-    // ///
-    // /// let from: Size2D<_> = size2(0.0, 10.0);
-    // /// let to:  Size2D<_> = size2(8.0, -4.0);
-    // ///
-    // /// assert_eq!(from.lerp(to, -1.0), size2(-8.0,  24.0));
-    // /// assert_eq!(from.lerp(to,  0.0), size2( 0.0,  10.0));
-    // /// assert_eq!(from.lerp(to,  0.5), size2( 4.0,   3.0));
-    // /// assert_eq!(from.lerp(to,  1.0), size2( 8.0,  -4.0));
-    // /// assert_eq!(from.lerp(to,  2.0), size2(16.0, -18.0));
-    // /// ```
+    /// Linearly interpolate each component between this size and another size.
     #[inline]
     pub fn lerp(self, other: Self, t: T) -> Self
     where
diff --git a/src/foundation/style.rs b/src/foundation/style.rs
index 2638fce..75b2f17 100644
--- a/src/foundation/style.rs
+++ b/src/foundation/style.rs
@@ -2,19 +2,25 @@ use std::cell::RefCell;
 
 use crate::foundation::colorspace::Color;
 
-/// Represent radial gradient specified by six parameters
+/// Represents radial gradient specified by six parameters
 #[derive(Default, Copy, Clone, Debug)]
 pub struct RadialGradient {
+    /// Represents first point x position of gradient
     pub x0: f64,
+    /// Represents first point y position of gradient
     pub y0: f64,
+    /// Represents first point radius of gradient
     pub r0: f64,
+    /// Represents second point x position of gradient
     pub x1: f64,
+    /// Represents second point y position of gradient
     pub y1: f64,
+    /// Represents second point radius of gradient
     pub r1: f64,
 }
 
 impl RadialGradient {
-    // may be use Point`s
+    /// Create new radial gradient with params
     pub fn new(x0: f64, y0: f64, r0: f64, x1: f64, y1: f64, r1: f64) -> Self {
         Self {
             x0,
@@ -27,18 +33,22 @@ impl RadialGradient {
     }
 }
 
-/// Represent radial gradient specified by four parameters
+/// Represents radial gradient specified by four parameters
 
 #[derive(Default, Copy, Clone, Debug)]
 pub struct LinearGradient {
+    /// Represents first point x position of gradient
     pub x0: f64,
+    /// Represents first point y position of gradient
     pub y0: f64,
+    /// Represents second point x position of gradient
     pub x1: f64,
+    /// Represents second point y position of gradient
     pub y1: f64,
 }
 
 impl LinearGradient {
-    // may be use Point`s
+    /// Create new linear gradient with params
     pub fn new(x0: f64, y0: f64, x1: f64, y1: f64) -> Self {
         Self { x0, y0, x1, y1 }
     }
@@ -48,11 +58,14 @@ impl LinearGradient {
 /// Define the an offset and a color, to a given canvas gradient. 
 #[derive(Debug, Copy, Clone)]
 pub struct ColorStop {
+    /// Reperesent the offset of color stop
     pub offset: f64,
+    /// Reperesent the color
     pub color: Color,
 }
 
 impl ColorStop {
+    /// Create new color stop with params
     pub fn new(offset: f64, color: Color) -> Self {
         Self { offset, color }
     }
@@ -61,7 +74,9 @@ impl ColorStop {
 /// Define the gradient type with parameters
 #[derive(Debug, Copy, Clone)]
 pub enum GradientType {
+    /// Linear gradient
     Linear(LinearGradient),
+    /// Radial gradient
     Radial(RadialGradient),
 }
 
@@ -74,11 +89,14 @@ impl Default for GradientType {
 /// Represents an opaque object describing a gradient.
 #[derive(Debug, Clone)]
 pub struct Gradient {
+    /// Kind of gradient
     pub kind: GradientType,
+    /// Color stop store
     pub stops: RefCell<Vec<ColorStop>>,
 }
 
 impl Gradient {
+    /// Create new gradient with type
     pub fn new(kind: GradientType) -> Self {
         Self {
             kind,
@@ -86,16 +104,19 @@ impl Gradient {
         }
     }
 
+    /// Create color stop to gradient
     pub fn add_color_stop(&self, stop: ColorStop) {
         let mut stops = self.stops.borrow_mut();
         stops.push(stop)
     }
 
+    /// Retrieve count of color stop's
     pub fn color_count(&self) -> usize {
         let stops = self.stops.borrow();
         stops.len()
     }
 
+    /// Retrieve color stop by index
     pub fn get_color_stop(&self, index: usize) -> Option<ColorStop> {
         let stops = self.stops.borrow();
         stops.get(index).copied()
diff --git a/src/foundation/text.rs b/src/foundation/text.rs
index 13ae1a4..d430c1b 100644
--- a/src/foundation/text.rs
+++ b/src/foundation/text.rs
@@ -1,34 +1,30 @@
-/// The horizontal alignment and layout of multiple lines of text.
-///
-#[derive(Clone, Copy, Debug, PartialEq, Eq)]
-pub enum TextAlign {
-    Left,
-    Right,
-    Center,
-    Justify,
-}
-
-impl Default for TextAlign {
-    fn default() -> Self {
-        TextAlign::Left
-    }
-}
-
 /// The font-weight property sets how thick or thin characters in text should be displayed
 ///
 #[derive(Clone, Debug, Copy, PartialEq, Eq)]
 pub enum FontWeight {
+    /// Thin text weight 
     Thin = 100,
+    /// Ultra light text weight
     UltraLight = 200,
+    /// Light text weight
     Light = 300,
+    /// Semi light text weight
     SemiLight = 350,
+    /// Book text weight
     Book = 380,
+    /// Normal text weight
     Normal = 400,
+    /// Medium text weight
     Medium = 500,
+    /// Semi bold text weight
     SemiBold = 600,
+    /// Bold text weight
     Bold = 700,
+    /// Ultra bold text weight
     UltraBold = 800,
+    /// Heavy text weight
     Heavy = 900,
+    /// Ultra heavy text weight
     UltraHeavy = 1000,
 }
 
@@ -42,8 +38,11 @@ impl Default for FontWeight {
 ///
 #[derive(Clone, Debug, Copy)]
 pub enum FontStyle {
+    /// Normal font
     Normal = 0,
+    /// Oblique font
     Oblique = 1,
+    /// Italic font
     Italic = 2,
 }
 
@@ -58,11 +57,17 @@ impl Default for FontStyle {
 /// see <https://developer.mozilla.org/ru/docs/Web/API/Canvas_API/Tutorial/Drawing_text>
 #[derive(Clone, Debug, Copy)]
 pub enum BaseLine {
+    /// Top baseline
     Top,
+    /// Hanging baseline
     Hanging,
+    /// Middle baseline
     Middle,
+    /// Alphabetic baseline
     Alphabetic,
+    /// Ideographic baseline
     Ideographic,
+    /// Bottom baseline
     Bottom,
 }
 
diff --git a/src/lib.rs b/src/lib.rs
index 2515981..1dfbaab 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,9 +1,18 @@
-//! oops
-//! <img src="https://github.com/hecrj/iced/blob/9712b319bb7a32848001b96bd84977430f14b623/examples/resources/ferris.png?raw=true" width="300">
+//! The library provides the basic building blocks for creating games and regular applications. 
+//! It contains behavior definitions for game applications and basic structures.
+//! 
+//! The basic fundamental entity for graphical applications such as games is color. 
+//! This library contains sufficient functionality for working with color, including storage, 
+//! processing and conversion between different color spaces. 
+//! 
+//! It also provides support for multiple color schemes and contains the 
+//! OpenColor palette for the convenience and higher quality of your applications.
 
 
 #![doc(html_logo_url = "https://dudochkin-victor.github.io/assets/ux-primitives/logo.svg")]
 
+#![warn(missing_docs)]
+
 pub mod foundation;
 
 pub mod prelude;
@@ -43,7 +52,7 @@ pub mod prelude;
 //     pub width: T,
 //     /// The extent of the element in the `U` units along the `y` axis.
 //     pub height: T,
-//     /// The extent of the element in the `U` units along the `z` axis.
+//     /// The extent #![warn(missing_docs)]of the element in the `U` units along the `z` axis.
 //     pub depth: T,
 //     #[doc(hidden)]
 //     pub _unit: PhantomData<U>,
diff --git a/src/prelude/canvas.rs b/src/prelude/canvas.rs
index 07eca14..da4a99d 100644
--- a/src/prelude/canvas.rs
+++ b/src/prelude/canvas.rs
@@ -1,30 +1,41 @@
 #![allow(clippy::too_many_arguments)]
 
-use crate::foundation::{colorspace::Color, BaseLine, FontStyle, FontWeight, Gradient, TextAlign};
+use crate::{
+    prelude::TextAlign,
+    foundation::{colorspace::Color, BaseLine, FontStyle, FontWeight, Gradient}
+};
 
 /// Specifies the current text direction used to draw text
-/// 
+///
 #[derive(Copy, Clone, Debug)]
 pub enum Direction {
+    /// Left to right text direction
     Ltr,
+    /// Right to left text direction
     Rtl,
+    /// Inherited text direction
     Inherit,
 }
 
 /// Represents the dimensions of a piece of text in the canvas
-/// 
+///
 #[derive(Copy, Clone, Debug)]
 pub struct TextMetrics {
+    /// Text width
     pub width: f64,
+    /// Text height
     pub height: f64,
 }
 
-/// Specifies how the ends of the drawn lines will look. 
-/// 
+/// Specifies how the ends of the drawn lines will look.
+///
 #[derive(Clone, Copy, Debug)]
 pub enum LineCap {
+    /// Butt line cap
     Butt,
+    /// Round line cap
     Round,
+    /// Square line cap
     Square,
 }
 
@@ -34,12 +45,15 @@ impl Default for LineCap {
     }
 }
 
-/// Specifies the shape of the vertices at which the lines converge 
-/// 
+/// Specifies the shape of the vertices at which the lines converge
+///
 #[derive(Clone, Copy, Debug)]
 pub enum LineJoin {
+    /// Miter line join
     Miter,
+    /// Bevel line join
     Bevel,
+    /// Round line join
     Round,
 }
 
@@ -49,14 +63,18 @@ impl Default for LineJoin {
     }
 }
 
-/// Specifies how the pattern is laid out 
-/// 
+/// Specifies how the pattern is laid out
+///
 #[allow(dead_code)]
 #[derive(Clone, Copy, Debug)]
 pub enum PatternExtend {
+    /// None pattern extend
     None,
+    /// Repeat pattern extend
     Repeat,
+    /// Reflect pattern extend
     Reflect,
+    /// Pad pattern extend
     Pad,
 }
 
@@ -69,6 +87,7 @@ impl Default for PatternExtend {
 /// Provides for interacting with the canvas.
 ///
 pub trait CanvasContext {
+    /// Represents pattern for canvas
     type Pattern;
     // /// Get current global transformation matrix
     // fn get_current_transform(&self) -> Matrix<f64>;
diff --git a/src/prelude/color.rs b/src/prelude/color.rs
index 8194646..d8cbd84 100644
--- a/src/prelude/color.rs
+++ b/src/prelude/color.rs
@@ -1,6 +1,8 @@
-//! Very nice color palette 
+#![allow(missing_docs)]
+//! [Open Color](https://github.com/yeun/open-color) palette
+//! 
+//! ![available colors](https://dudochkin-victor.github.io/assets/ux-primitives/open-color.svg)
 
-//#![rustfmt::skip]
 #![cfg_attr(rustfmt, rustfmt_skip)]
 
 #[cfg(any(feature = "color_quantization",test))]
@@ -8,6 +10,7 @@ use lazy_static::lazy_static;
 
 use crate::foundation::colorspace::Color;
 
+pub const TRANSPARENT: Color = Color { red: 1., green: 1., blue: 1., alpha: 0. };
 pub const WHITE: Color = Color { red: 1., green: 1., blue: 1., alpha: 1. };
 pub const BLACK: Color = Color { red: 0./255., green: 0./255., blue: 0./255., alpha: 1. };
 
diff --git a/src/prelude/enums/agenda.rs b/src/prelude/enums/agenda.rs
index 9a179ac..ac6c9a3 100644
--- a/src/prelude/enums/agenda.rs
+++ b/src/prelude/enums/agenda.rs
@@ -4,17 +4,24 @@ use std::any::TypeId;
 /// 
 /// Can be extended with Custom by using concrete project values.
 ///
+#[derive(Clone, Copy, Debug, PartialEq, Eq)]
 pub enum Agenda {
     /// The default Agenda.  Anything assigned to this will be run each update irrespective of what agenda the parent is assigned.
     Always,
+    /// The Birth Agenda
     Birth,
+    /// The Death Agenda
     Death,
+    /// The Standard Agenda
     Standard,
+    /// The Attack Agenda
     Attack,
+    /// The Defend Agenda
     Defend,
 
     /// Allows Agenda to be extended (e.g. for using entity specific enumerated agendas).
     Custom {
+        /// Custom value
         value: TypeId,
     },
 }
diff --git a/src/prelude/enums/audio_channel.rs b/src/prelude/enums/audio_channel.rs
index ec672bb..84f2591 100644
--- a/src/prelude/enums/audio_channel.rs
+++ b/src/prelude/enums/audio_channel.rs
@@ -2,14 +2,20 @@
 /// 
 /// Can be extended with Custom by using concrete project values.
 ///
+#[derive(Clone, Copy, Debug, PartialEq, Eq)]
 pub enum AudioChannel {
+    /// Default audio channel
     Default,
+    /// Effects audio channel
     Effects,
+    /// Interface audio channel
     Interface,
+    /// Music audio channel
     Music,
 
     /// Allows AudioChannel to be extended (e.g. for using project specific enumerated audio channels or entity specific channels).
     Custom {
+        /// Custom value
         value: u32,
     },
 }
diff --git a/src/prelude/enums/full_screen.rs b/src/prelude/enums/full_screen.rs
index deaac48..94846fa 100644
--- a/src/prelude/enums/full_screen.rs
+++ b/src/prelude/enums/full_screen.rs
@@ -2,6 +2,7 @@
 /// 
 /// Can be extended with Custom by using concrete project values.
 ///
+#[derive(Clone, Copy, Debug, PartialEq)]
 pub enum FullScreen {
     /// FullScreen mode is not available.
     Disabled,
@@ -19,5 +20,8 @@ pub enum FullScreen {
     ScaleNearestMultiple,
 
     /// Allows Scale to be extended (e.g. for using project specific scale modes).
-    Custom { value: f32 },
+    Custom { 
+        /// Scale value
+        value: f32 
+    },
 }
diff --git a/src/prelude/enums/joypad_button.rs b/src/prelude/enums/joypad_button.rs
index 8f17cf8..360c057 100644
--- a/src/prelude/enums/joypad_button.rs
+++ b/src/prelude/enums/joypad_button.rs
@@ -2,12 +2,20 @@
 /// 
 /// Includes directional buttons and two fire buttons: Primary & Secondary. Fire is used as a shortcut for Primary or Secondary.
 ///
+#[derive(Clone, Copy, Debug, PartialEq, Eq)]
 pub enum JoypadButton {
+    /// Fire Joypad button
     Fire,
+    /// Up Joypad button
     Up,
+    /// Right Joypad button
     Right,
+    /// Down Joypad button
     Down,
+    /// Left Joypad button
     Left,
+    /// Primary Joypad button
     Primary,
+    /// Secondary Joypad button
     Secondary,
 }
diff --git a/src/prelude/enums/joypad_touch.rs b/src/prelude/enums/joypad_touch.rs
index 81b2a1e..ade1624 100644
--- a/src/prelude/enums/joypad_touch.rs
+++ b/src/prelude/enums/joypad_touch.rs
@@ -1,5 +1,6 @@
 /// Representing the touch input modes for a Touchscreen Joypad for use in the `Joypad` virtual controller.
 ///
+#[derive(Clone, Copy, Debug, PartialEq, Eq)]
 pub enum JoypadTouch {
     /// Touch input is disabled for joypad.  The default.
     /// It is advised that [JoypadTouch] be set in Factory based on device interrogation.
@@ -14,11 +15,17 @@ pub enum JoypadTouch {
     /// If the horizontal drag vector is > distance then left or right is down.
     /// If the vertical drag vector is > distance then up or down is down.
     /// Any tap of less than 200ms triggers primary down.
-    Joystick { distance: i32 }, // is optional
+    Joystick { 
+        /// Distance value
+        distance: i32 
+    }, // is optional
 
     /// A swipe can begin anywhere.  Speed sets the minimum vector length (pixels per second) that determines movement.  100 pixels is the default.
     /// If the horizontal swipe vector is > speed then left or right is down.
     /// If the vertical swipe vector is > speed then up or down is down.
     /// Any tap of less than 200ms triggers primary down.
-    Swipe { speed: i32 }, // is optional
+    Swipe { 
+        /// Swipe speed value
+        speed: i32 
+    }, // is optional
 }
diff --git a/src/prelude/enums/key.rs b/src/prelude/enums/key.rs
index d3eb16f..72a4c76 100644
--- a/src/prelude/enums/key.rs
+++ b/src/prelude/enums/key.rs
@@ -2,8 +2,9 @@
 /// 
 /// Can be extended with Custom by using concrete project values.
 ///
-
+#[allow(missing_docs)]
 #[allow(non_camel_case_types)]
+#[derive(Clone, Copy, Debug, PartialEq, Eq)]
 pub enum Key {
     NUM_LOCK,
     CLEAR,
@@ -106,6 +107,7 @@ pub enum Key {
     TOPLEFT,
     /// Allows EKey to be extended (e.g. for using non US / English keyboards).
     CUSTOM {
+        /// Custom value
         value: u32,
     },
 }
diff --git a/src/prelude/enums/message.rs b/src/prelude/enums/message.rs
index dffbd14..b40150c 100644
--- a/src/prelude/enums/message.rs
+++ b/src/prelude/enums/message.rs
@@ -1,12 +1,18 @@
 /// These messages are dispatched internally.
 ///
+#[derive(Clone, Copy, Debug, PartialEq, Eq)]
 pub enum MessageKind {
+    /// Dispose message type
     Dispose,
+    /// Init message type
     Init,
+    /// Pause message type
     Pause,
+    /// Resume message type
     Resume,
     /// Allows [MessageKind] to be extended (e.g. for using project specific mesages).
     Custom {
+        /// Custom value
         value: u32,
     },
 }
diff --git a/src/prelude/enums/mouse_button.rs b/src/prelude/enums/mouse_button.rs
index 362e402..42c60b3 100644
--- a/src/prelude/enums/mouse_button.rs
+++ b/src/prelude/enums/mouse_button.rs
@@ -1,7 +1,11 @@
 /// Representing the buttons on a Mouse for use in the InputMouse virtual controller.
 ///
+#[derive(Clone, Copy, Debug, PartialEq, Eq)]
 pub enum MouseButton {
+    /// Left mouse button
     Left,
+    /// Middle mouse button
     Middle,
+    /// Right mouse button
     Right,
 }
diff --git a/src/prelude/enums/mouse_cursor.rs b/src/prelude/enums/mouse_cursor.rs
index a4e6fbc..f1649a2 100644
--- a/src/prelude/enums/mouse_cursor.rs
+++ b/src/prelude/enums/mouse_cursor.rs
@@ -1,10 +1,20 @@
 /// Representing the mouse cursor for use in the `InputMouse` virtual controller.
 ///
+#[derive(Clone, Copy, Debug, PartialEq, Eq)]
 pub enum MouseCursor {
+    /// Arrow mouse cursor
     Arrow,
+    /// Auto mouse cursor
     Auto,
+    /// Button mouse cursor
     Button,
+    /// Hand mouse cursor
     Hand,
+    /// Beam mouse cursor
     Beam,
-    Custom { value: u32 },
+    /// Custom mouse cursor
+    Custom { 
+        /// Custom value
+        value: u32 
+    },
 }
diff --git a/src/prelude/enums/overlay_button.rs b/src/prelude/enums/overlay_button.rs
index ef2bbb9..262c521 100644
--- a/src/prelude/enums/overlay_button.rs
+++ b/src/prelude/enums/overlay_button.rs
@@ -1,13 +1,20 @@
 /// Representing the control buttons on the `Overlay`.
 ///
+#[derive(Clone, Copy, Debug, PartialEq, Eq)]
 pub enum OverlayButton {
+    /// Back overlay button
     Back,
+    /// Mute overlay button
     Mute,
+    /// UnMute overlay button
     Unmute,
+    /// Pause overlay button
     Pause,
+    /// Unpause overlay button
     Unpause,
     /// Allows [OverlayButton] to be extended (e.g. for using project specific overlay buttons - settings, restart, context help).
     Custom {
+        /// Custom value
         value: u32,
     },
 }
diff --git a/src/prelude/enums/scene.rs b/src/prelude/enums/scene.rs
index 3099d62..df3ab4c 100644
--- a/src/prelude/enums/scene.rs
+++ b/src/prelude/enums/scene.rs
@@ -3,23 +3,41 @@
 /// A basic game can be made using these defaults.
 /// Can be extended with Custom by using concrete project values.
 ///
+#[derive(Clone, Copy, Debug, PartialEq, Eq)]
 pub enum SceneKind {
+    /// Splash screen scene
     Splash,
+    /// Intro screen scene
     Intro,
+    /// SelectSession screen scene
     SelectSession,
+    /// SelectStory screen scene
     SelectStory,
+    /// SelectLevel screen scene
     SelectLevel,
+    /// Instructions screen scene
     Instructions,
+    /// Settings screen scene
     Settings,
+    /// Menu screen scene
     Menu,
+    /// Avatar screen scene
     Avatar,
+    /// Shop screen scene
     Shop,
+    /// Rewards screen scene
     Rewards,
+    /// LeaderBoard screen scene
     LeaderBoard,
+    /// Game screen scene
     Game,
+    /// Interstitial screen scene
     Interstitial,
+    /// Cinematic screen scene
     Cinematic,
+    /// Results screen scene
     Results,
+    /// Exit screen scene
     Exit,
 
     /// Recommended to be used as a testing sandbox to test new entities etc.
@@ -27,6 +45,7 @@ pub enum SceneKind {
 
     /// Allows [SceneKind] to be extended (e.g. for using project specific enumerated scene types).
     Custom {
+        /// Custom value
         value: u32,
     },
 }
diff --git a/src/prelude/enums/text_align.rs b/src/prelude/enums/text_align.rs
index e53af08..96dd43b 100644
--- a/src/prelude/enums/text_align.rs
+++ b/src/prelude/enums/text_align.rs
@@ -1,8 +1,20 @@
-/// Representing alternative horizontal text alignments for `TextStyle` implementations.
+/// Representing alternative horizontal text alignments for 
+/// `TextStyle` implementations and layout of multiple lines of text
 ///
+#[derive(Clone, Copy, Debug, PartialEq, Eq)]
 pub enum TextAlign {
+    /// Justified text
     Justify,
+    /// Left aligned text
     Left,
+    /// Center aligned text
     Center,
+    /// Right aligned text
     Right,
 }
+
+impl Default for TextAlign {
+    fn default() -> Self {
+        TextAlign::Left
+    }
+}
\ No newline at end of file
diff --git a/src/prelude/enums/text_style.rs b/src/prelude/enums/text_style.rs
index c11d716..e6abf50 100644
--- a/src/prelude/enums/text_style.rs
+++ b/src/prelude/enums/text_style.rs
@@ -2,16 +2,24 @@
 /// 
 /// Can be extended with Custom by using concrete project values.
 ///
+#[derive(Clone, Copy, Debug, PartialEq, Eq)]
 pub enum TextStyleKind {
+    /// Button text style
     Button,
+    /// Body text style
     Body,
+    /// Headline text style
     Headline,
+    /// Subhead text style
     Subhead,
+    /// Smallprint text style
     Smallprint,
+    /// Oversized text style
     Oversized,
 
     /// Allows [TextStyleKind] to be extended (e.g. for using project specific text styles).
     Custom {
+        /// Custom value
         value: u32,
     },
 }
diff --git a/src/prelude/mod.rs b/src/prelude/mod.rs
index 9e9217f..df0303e 100644
--- a/src/prelude/mod.rs
+++ b/src/prelude/mod.rs
@@ -1,11 +1,12 @@
-//! oops
+//! The `primitives` prelude.
 //!
+//! The purpose of this module is to alleviate imports of many common primitives
+//! traits by adding a glob import to the top of primitives heavy modules:
 //!
-//! <img src="https://github.com/hecrj/iced/blob/9712b319bb7a32848001b96bd84977430f14b623/examples/resources/ferris.png?raw=true" width="300">
-//!
-//!
-//! [![Pane grid - Iced](https://thumbs.gfycat.com/MixedFlatJellyfish-small.gif)](https://www.youtube.com/watch?v=QQ7MimTj2vg)
-//!
+//! ```
+//! # #![allow(unused_imports)]
+//! use primitives::prelude::*;
+//! ```
 
 mod enums;
 pub use self::enums::*;
@@ -36,6 +37,7 @@ pub use crate::foundation::colorspace::{
 /// This interface is obsolete.
 ///
 pub trait Zero {
+    /// Creates a structure with zero values.
     fn zero() -> Self;
 }
 
@@ -44,5 +46,6 @@ pub trait Zero {
 /// This interface is obsolete.
 ///
 pub trait One {
+    /// Creates a structure with values equal to one.
     fn one() -> Self;
 }
diff --git a/src/prelude/traits/engine_scene.rs b/src/prelude/traits/engine_scene.rs
index a80bfb7..980a8ee 100644
--- a/src/prelude/traits/engine_scene.rs
+++ b/src/prelude/traits/engine_scene.rs
@@ -2,9 +2,9 @@ use crate::prelude::SceneKind;
 
 use super::{EntityCollection, Process, Viewable};
 
-/// The Scene should be implemented by objects intending to represent scene states in the `SceneManager`.
+/// The Scene should be implemented by objects intending to Represents scene states in the `SceneManager`.
 /// 
-/// Scenes represent the larger building blocks of the concept, and contain Entities which do the work.
+/// Scenes Represents the larger building blocks of the concept, and contain Entities which do the work.
 ///
 pub trait EngineScene: Process + EntityCollection + Viewable {
     /// The kind of this scene.
diff --git a/src/prelude/traits/kernel.rs b/src/prelude/traits/kernel.rs
index 5babca5..a49826c 100644
--- a/src/prelude/traits/kernel.rs
+++ b/src/prelude/traits/kernel.rs
@@ -6,7 +6,7 @@ use super::{
 /// Handles main updates and provides global locators for all managers
 ///
 pub trait Kernel: Pauseable + Logger {
-    /// Defined by the [Factory], can be used for conditional logic relating to build modes and debug.
+    /// Defined by the [EngineFactory], can be used for conditional logic relating to build modes and debug.
     fn is_debug(&self) -> bool;
 
     /// Identifies a non network location, can be used for conditional logic relating to build modes and debug.
@@ -15,11 +15,13 @@ pub trait Kernel: Pauseable + Logger {
     /// Toggleable by the user, intended to be used as a switch to disable intensive, but non essential, content (performance vs wow).
     fn is_eyecandy(&self) -> bool;
 
+    /// Toggle eyecandy
     fn set_eyecandy(&self, val: bool);
 
     /// Toggleable by the user, enables or disables full screen mode.
     fn is_fullscreen(&self) -> bool;
 
+    /// Toggle fullscreen
     fn set_fullscreen(&self, val: bool);
 
     /// The topmost visual element, used for chrome & global controls.
@@ -49,6 +51,7 @@ pub trait Kernel: Pauseable + Logger {
     /// Read and write globally accessible variables.
     fn session(&self) -> Box<dyn Session>;
 
+    /// Set session variables
     fn set_session(&self, val: Box<dyn Session>);
 
     // /// Used for read only application settings and localisation text.
@@ -63,13 +66,13 @@ pub trait Kernel: Pauseable + Logger {
     /// 
     /// # Arguments
     /// 
-    /// * `asActual` - Use actual framerate (potentially laggy), or the desired framerate (from [Factory]). (optional: default: true)
+    /// * `asActual` - Use actual framerate (potentially laggy), or the desired framerate (from [EngineFactory]). (optional: default: true)
     ///
     /// Return: Frames per second.
     /// 
     fn get_framerate(&self, as_actual: Option<bool>) -> f32;
 
-    /// Internal method called when preloader completes; launches the starting scene as defined by Factory::startingSceneType.
+    /// Internal method called when preloader completes; launches the starting scene as defined by [EngineFactory::starting_scene_type].
     /// 
     /// # Arguments
     /// 
diff --git a/src/prelude/traits/overlay.rs b/src/prelude/traits/overlay.rs
index 4671c66..38b3ea0 100644
--- a/src/prelude/traits/overlay.rs
+++ b/src/prelude/traits/overlay.rs
@@ -11,6 +11,7 @@ pub trait Overlay {
     /// An optional [Entity] which is displayed and updated when the game is paused.
     fn pause_entity(&self) -> Box<dyn Entity>;
 
+    /// Set pause entity which is displayed and updated when the game is paused.
     fn set_pause_entity(&self, val: Box<dyn Entity>);
 
     /// Sets the visibility of a specific overlay button.
diff --git a/src/prelude/traits/pauseable.rs b/src/prelude/traits/pauseable.rs
index cc9c07d..2c4302e 100644
--- a/src/prelude/traits/pauseable.rs
+++ b/src/prelude/traits/pauseable.rs
@@ -5,6 +5,7 @@ pub trait Pauseable {
     /// Determines if the object is updating or not.
     fn is_active(&self) -> bool;
 
+    /// Set active state
     fn set_active(&self, val: bool);
 
     /// Sets active to false.
diff --git a/src/prelude/traits/positionable.rs b/src/prelude/traits/positionable.rs
index e69b161..0e0964d 100644
--- a/src/prelude/traits/positionable.rs
+++ b/src/prelude/traits/positionable.rs
@@ -4,11 +4,13 @@ pub trait Positionable {
     /// The horizontal position.
     fn x(&self) -> f32;
 
+    /// Set horizontal position.
     fn set_x(&self, val: f32);
 
     /// The vertical position.
     fn y(&self) -> f32;
 
+    /// Set vertical position.
     fn set_y(&self, val: f32);
 
     /// Sets both the horizontal and vertical position
diff --git a/src/prelude/traits/priority.rs b/src/prelude/traits/priority.rs
index 9d8bcfe..73d8ee3 100644
--- a/src/prelude/traits/priority.rs
+++ b/src/prelude/traits/priority.rs
@@ -5,5 +5,6 @@ pub trait Priority {
     /// Higher numbers should be considered on top of the list, therefore of higher priority.
     fn priority(&self) -> i32;
 
+    /// Set the rank score of this item.
     fn set_priority(&self, val: i32);
 }
diff --git a/src/prelude/traits/scene_manager.rs b/src/prelude/traits/scene_manager.rs
index 670e5b1..89dfd0e 100644
--- a/src/prelude/traits/scene_manager.rs
+++ b/src/prelude/traits/scene_manager.rs
@@ -2,7 +2,7 @@ use crate::prelude::SceneKind;
 
 use super::EngineScene;
 
-/// The SceneManager should be implemented by objects intended to manage the [Scene] state machine.
+/// The SceneManager should be implemented by objects intended to manage the [EngineScene] state machine.
 /// 
 /// Only a single scene is active at any given update.  Which scene is configured by this manager.
 ///
