A lot of functions add, close of the first version