update tests, add push state, add complex test