diff --git a/Quaternion.cpp b/Quaternion.cpp
index c23016a..0107389 100644
--- a/Quaternion.cpp
+++ b/Quaternion.cpp
@@ -28,13 +28,6 @@ Quaternion::Quaternion(float _x, float _y, float _z, float _w) {
 	w = _w;
 }
 
-Quaternion::Quaternion(Vector3 _xyz, float _w) {
-	x = _xyz.x;
-	y = _xyz.y;
-	z = _xyz.z;
-	w = _w;
-}
-
 Quaternion::Quaternion(Quat q) {
 	x = q.x;
 	y = q.y;
@@ -320,8 +313,8 @@ Quaternion Quaternion::SlerpUnclamped(const Quaternion& a, const Quaternion& b,
 		blendA = 1.0f - t;
 		blendB = t;
 	}
-
-	Quaternion result = Quaternion(axyz * blendA + b2.xyz() * blendB, blendA * a.w + blendB * b2.w);
+	Vector3 v = axyz * blendA + b2.xyz() * blendB;
+	Quaternion result = Quaternion(v.x, v.y, v.z, blendA * a.w + blendB * b2.w);
 	if (result.GetLengthSquared() > 0.0f)
 		return Quaternion::Normalize(result);
 	else
diff --git a/Quaternion.h b/Quaternion.h
index cff9c69..e5ece6d 100644
--- a/Quaternion.h
+++ b/Quaternion.h
@@ -20,23 +20,34 @@ extern "C" {
 /// 
 struct Quaternion : Quat {
 public:
+	/// 
+	/// Create a new identity quaternion
+	/// 
 	Quaternion();
+	/// 
+	/// create a new quaternion with the given values
+	/// 
+	/// x axis value
+	/// y axis value
+	/// z axis value
+	/// w axis value
 	Quaternion(float _x, float _y, float _z, float _w);
-	Quaternion(Vector3 _xyz, float _w);
+	/// 
+	/// Create a quaternion from C-style Quat
+	/// 
+	/// 
 	Quaternion(Quat q);
 	~Quaternion();
 
+	/// 
+	/// An identity quaternion
+	/// 
 	const static Quaternion identity;
 
-	float GetLength() const;
-	float GetLengthSquared() const;
-	static float GetLengthSquared(const Quaternion& q);
 	void Normalize();
 	static Quaternion Normalize(const Quaternion& q);
 	static void Normalize(const Quaternion& q, Quaternion& result);
 
-	static float Dot(Quaternion a, Quaternion b);
-
 	static Vector3 ToAngles(const Quaternion& q1);
 
 	Vector3 operator *(const Vector3& p) const;
@@ -65,6 +76,14 @@ public:
 	static float GetAngleAround(Vector3 axis, Quaternion rotation);
 	static Quaternion GetRotationAround(Vector3 axis, Quaternion rotation);
 	static void GetSwingTwist(Vector3 axis, Quaternion rotation, Quaternion* swing, Quaternion* twist);
+
+protected:
+	float GetLength() const;
+	float GetLengthSquared() const;
+	static float GetLengthSquared(const Quaternion& q);
+
+	static float Dot(Quaternion a, Quaternion b);
+
 public:
 	Vector3 xyz() const;
 };
diff --git a/README.md b/README.md
index cfe5ca8..6c5904b 100644
--- a/README.md
+++ b/README.md
@@ -1,12 +1,8 @@
-\author PasserVR
-\version 0.1
 \mainpage Vector Algebra
 
 3D Vector algebra library (Vector3, Quaternion)
 
-Note: this documentation is still work in progress....
-
 Main components
 ---------------
-* Vector3
-* Quaternion
\ No newline at end of file
+* [Vector3](https://passervr.com/apis/VectorAlgebra/struct_vector3.html)
+* [Quaternion](https://passervr.com/apis/VectorAlgebra/struct_quaternion.html)
\ No newline at end of file