add changes and tests