public boolean begin() {
        try {
            //Sanity check
            if(filename == null || filename.isEmpty()) {
                throw new Exception("File name must be set");
            }
            
            //Ready the output writer
            Charset charset = Charset.forName("UTF-8");
            bWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filename), charset));

            //Set headers to default values if not set explicitly
            if(host == null || host.isEmpty()) {
                host = "http://api.somewebapp.com/";
            }
            if(title == null || title.isEmpty()) {
                title = "Project Name";
            }
            if(description == null || description.isEmpty()) {
                description = "Project Description goes here.";
            }
            
            //Write out the headers
            bWriter.write("HOST: ");
            bWriter.write(host);
            bWriter.newLine();
            bWriter.newLine();
            
            bWriter.write("--- " + title + " ---");
            bWriter.newLine();
            bWriter.newLine();

            bWriter.write("---");
            bWriter.newLine();
            bWriter.write(description);
            bWriter.newLine();
            bWriter.write("---");
            bWriter.newLine();
            bWriter.newLine();

            gson = new GsonBuilder().setPrettyPrinting().create();
            return true;
        } catch (Exception e) {
            System.out.println(this.getClass().getName() + ": " + e.getMessage());
            return false;
        }
    }