diff --git a/sources/reactphysics3d/engine/ConstraintSolver.cpp b/sources/reactphysics3d/engine/ConstraintSolver.cpp
new file mode 100644
index 00000000..f897de9a
--- /dev/null
+++ b/sources/reactphysics3d/engine/ConstraintSolver.cpp
@@ -0,0 +1,76 @@
+/***************************************************************************
+* Copyright (C) 2009 Daniel Chappuis *
+****************************************************************************
+* This file is part of ReactPhysics3D. *
+* *
+* ReactPhysics3D is free software: you can redistribute it and/or modify *
+* it under the terms of the GNU Lesser General Public License as published *
+* by the Free Software Foundation, either version 3 of the License, or *
+* (at your option) any later version. *
+* *
+* ReactPhysics3D is distributed in the hope that it will be useful, *
+* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+* GNU Lesser General Public License for more details. *
+* *
+* You should have received a copy of the GNU Lesser General Public License *
+* along with ReactPhysics3D. If not, see . *
+***************************************************************************/
+
+// Libraries
+#include "ConstraintSolver.h"
+
+// Constructor
+ConstraintSolver::ConstraintSolver() {
+
+}
+
+// Destructor
+ConstraintSolver~ConstraintSolver() {
+
+}
+
+// Allocate all the matrices needed to solve the LCP problem
+void ConstraintSolver::allocate(std::vector& constraints, double dt) {
+ std::vector activeConstraints;
+ unsigned int sizeJacobian = 0;
+ unsigned int nbAuxiliaryVars = 0;
+
+ // For each constraint
+ for (unsigned int i=0; iisActive()) {
+ activeConstraints.push_back(constraints.at(i));
+
+ // Evaluate the constraint
+ constraints.at(i)->evaluate(dt);
+
+ // Set the current jacobian index to the constraint
+ constraints.at(i)->setJacobianIndex(sizeJacobian);
+
+ // Update the size of the jacobian matrix
+ sizeJacobian += constraints.at(i)->getNbJacobianRows();
+ }
+ }
+
+ // For each active constraint
+ for (unsigned int i=0; isetAuxiliaryIndex(sizeJacobian + nbAuxiliaryVars);
+
+ // Update the number of auxiliary variables
+ nbAuxiliaryVars += activeConstraints.at(i)->getNbAuxiliaryVars();
+ }
+
+ // TODO : Continue to implement this ...
+}
+
+// Fill in all the matrices needed to solve the LCP problem
+void ConstraintSolver::fillInMatrices(std::vector constraints) {
+
+}
+
+// Solve the current LCP problem
+void ConstraintSolver::solve(std::vector constraints, double dt) {
+
+}
diff --git a/sources/reactphysics3d/engine/ConstraintSolver.h b/sources/reactphysics3d/engine/ConstraintSolver.h
new file mode 100644
index 00000000..9c5e9ad4
--- /dev/null
+++ b/sources/reactphysics3d/engine/ConstraintSolver.h
@@ -0,0 +1,48 @@
+/***************************************************************************
+* Copyright (C) 2009 Daniel Chappuis *
+****************************************************************************
+* This file is part of ReactPhysics3D. *
+* *
+* ReactPhysics3D is free software: you can redistribute it and/or modify *
+* it under the terms of the GNU Lesser General Public License as published *
+* by the Free Software Foundation, either version 3 of the License, or *
+* (at your option) any later version. *
+* *
+* ReactPhysics3D is distributed in the hope that it will be useful, *
+* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+* GNU Lesser General Public License for more details. *
+* *
+* You should have received a copy of the GNU Lesser General Public License *
+* along with ReactPhysics3D. If not, see . *
+***************************************************************************/
+
+#ifndef CONSTRAINTSOLVER_H
+#define CONSTRAINTSOLVER_H
+
+// Libraries
+#include "../constraint/Constraint.h"
+
+// ReactPhysics3D namespace
+namespace reactphysics3d {
+
+ /* -------------------------------------------------------------------
+ Class ConstrainSolver :
+ This class represents the constraint solver. The goal is to
+ solve A constraint-base LCP problem.
+ -------------------------------------------------------------------
+*/
+class ConstraintSolver {
+ protected:
+ void allocate(std::vector& constraints, double dt); // Allocate all the matrices needed to solve the LCP problem
+ void fillInMatrices(std::vector constraints); // Fill in all the matrices needed to solve the LCP problem
+
+ public:
+ ConstraintSolver(); // Constructor
+ virtual ~ConstraintSolver(); // Destructor
+ void solve(std::vector& constraints, double dt); // Solve the current LCP problem
+};
+
+} // End of ReactPhysics3D namespace
+
+#endif
diff --git a/sources/reactphysics3d/engine/PhysicsEngine.h b/sources/reactphysics3d/engine/PhysicsEngine.h
index 59ca4836..5e613737 100644
--- a/sources/reactphysics3d/engine/PhysicsEngine.h
+++ b/sources/reactphysics3d/engine/PhysicsEngine.h
@@ -47,7 +47,6 @@ class PhysicsEngine {
public :
PhysicsEngine(PhysicsWorld* world, const Time& timeStep) throw (std::invalid_argument); // Constructor
- PhysicsEngine(const PhysicsEngine& engine); // Copy-constructor
~PhysicsEngine(); // Destructor
void start(); // Start the physics simulation