more refactor Start() function for better use outside package