refactored launcher