<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

def start(self):
        "Start the project on the directory"
        bookname = self.args.get('--bookname', None)
        if not bookname:
            bookname = 'book.md'
        project_dir = self.args.get('<name>', None)
        if not project_dir:
            project_dir = join(self.cwd, 'Book')
        project_dir = abspath(project_dir)

        # create the working dir?
        if not exists(project_dir) or self.args['--overwrite']:
            if exists(project_dir):
                if yesno(warning(
                        'Are you sure you want to remove `%s`? '
                        % project_dir)):
                    shutil.rmtree(project_dir)
                else:
                    sys.exit(error('Operation aborted'))
            os.makedirs(project_dir)
            os.makedirs(join(project_dir, 'build'))
            with codecs.open(
                    join(project_dir, bookname), 'w', encoding="utf") as fd:
                fd.write('''# This is your book
    You can start it right now and publish it away!
    ''')
        # What shall we do with the configuration file?
        config_file = join(project_dir, 'book.json')
        rewrite_config_file = True
        if exists(config_file) and not self.args['--overwrite']:
            print('A config file already exists. This step is skipped')
            rewrite_config_file = False

        if rewrite_config_file:
            with codecs.open(config_file, 'w', encoding="utf") as fd:
                data = {
                    'files': ['%s' % bookname],
                    'author': "%s" % ask("What is your name? "),
                    'title': '%s' % ask("E-book title, please? "),
                }
                data['fileroot'] = unidecode(data['title']).lower() \
                    .replace(' ', '-')
                # pick a generator
                if len(self.generators) == 1:
                    data['generator'] = self.generators[0]
                else:
                    picked_generator = None
                    while not picked_generator:
                        picked_generator = ask(
                            "Which generator? [%s] "
                            % ', '.join(self.generators)
                        )
                        if picked_generator not in self.generators:
                            print warning(
                                'Wrong answer. Please pick one on the list')
                            picked_generator = None
                    # fine, we have one.
                    data['generator'] = picked_generator
                json.dump(data, fd, indent=4, encoding="utf")

        # Game over
        print
        sys.exit(
            success('Now you can go to `%s` and start editing your book...'
                    % project_dir))