improvements
additional tests and improvements
better tests