update & add more tests