change structure of project
add precondition testing