new methods and tested
Revert "new methods and tested"

This reverts commit 6c44b312f27a3d15598365f2abc5c61364a07bc6.
Revert "Revert "new methods and tested""

This reverts commit e756ff1127d23f6f408b15604523b40392919e83.