added start and more refactoring