A lot of changes and new tests