first version of the code