breaking out into separated Setup and Teardown and some refactoring and new tests