lots of refactoring, sucess setup