Adding the first version of the implementation