diff -ruN ../drupal-6.0-beta4/profiles/sb/sb.profile ./profiles/sb/sb.profile
--- ../drupal-6.0-beta4/profiles/sb/sb.profile	1970-01-01 01:00:00.000000000 +0100
+++ ./profiles/sb/sb.profile	2007-12-13 18:01:54.000000000 +0100
@@ -0,0 +1,259 @@
+<?php
+/*********************************************
+ * Installation profile for a small business website.   *
+ *********************************************/
+
+/**
+ * Return an array of the modules to be enabled when this profile is installed.
+ *
+ * @return
+ *   An array of modules to enable.
+ */
+function sb_profile_modules() {
+  return array('color', 'comment', 'help', 'menu', 'taxonomy', 'dblog');
+}
+
+/**
+ * Return a description of the profile for the initial installation screen.
+ *
+ * @return
+ *   An array with keys 'name' and 'description' describing this profile,
+ *   and optional 'language' to override the language selection for
+ *   language-specific profiles.
+ */
+function sb_profile_details() {
+  return array(
+    'name' => 'Small Business',
+    'description' => 'This installation profile sets up a simple Small Business website. '
+  );
+}
+
+function create_new_node($node) {
+	 db_query("INSERT INTO {node} (nid,vid,type,title,uid,status,created,changed,comment,promote,moderate,sticky)
+			  VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','0','%s','0','%s')",
+			  $node['nid'], $node['vid'],$node['type'], $node['title'], '1', $node['status'], $time, $time, 
+			  $node['promote'], $node['sticky']);
+			  
+     db_query("INSERT INTO {node_revisions} (nid, vid, uid, title, body, teaser, log, timestamp, format)
+				VALUES ('%s', '%s', '1', '%s', '%s', '%s', '', '%i', '1')",
+				$node['nid'], $node['vid'], $node['title'], $node['body'],$node['teaser'], $time);
+}
+
+/**
+ * Return a list of tasks that this profile supports.
+ *
+ * @return
+ *   A keyed array of tasks the profile will perform during
+ *   the final stage. The keys of the array will be used internally,
+ *   while the values will be displayed to the user in the installer
+ *   task list.
+ */
+function sb_profile_task_list() {
+}
+
+/**
+ * Perform any final installation tasks for this profile.
+ *
+ * The installer goes through the profile-select -> locale-select
+ * -> requirements -> database -> locale-initial-batch -> configure
+ * -> locale-remaining-batch -> finished -> done tasks in this order,
+ * if you don't implement this function in your profile.
+ *
+ * If this function is implemented, you can have any number of
+ * custom tasks to perform after 'configure', implementing a state
+ * machine here to walk the user through those tasks. First time,
+ * this function gets called with $task set to 'profile', and you
+ * can advance to further tasks by setting $task to your tasks'
+ * identifiers, used as array keys in the hook_profile_task_list()
+ * above. You must avoid the reserved tasks listed in
+ * install_reserved_tasks(). If you implement your custom tasks,
+ * this function will get called in every HTTP request (for form
+ * processing, printing your information screens and so on) until
+ * you advance to the 'profile-finished' task, with which you
+ * hand control back to the installer. Each custom page you
+ * return needs to provide a way to continue, such as a form
+ * submission or a link. You should also set custom page titles.
+ *
+ * You should define the list of custom tasks you implement by
+ * returning an array of them in hook_profile_task_list(), as these
+ * show up in the list of tasks on the installer user interface.
+ *
+ * Remember that the user will be able to reload the pages multiple
+ * times, so you might want to use variable_set() and variable_get()
+ * to remember your data and control further processing, if $task
+ * is insufficient. Should a profile want to display a form here,
+ * it can; the form should set '#redirect' to FALSE, and rely on
+ * an action in the submit handler, such as variable_set(), to
+ * detect submission and proceed to further tasks. See the configuration
+ * form handling code in install_tasks() for an example.
+ *
+ * Important: Any temporary variables should be removed using
+ * variable_del() before advancing to the 'profile-finished' phase.
+ *
+ * @param $task
+ *   The current $task of the install system. When hook_profile_tasks()
+ *   is first called, this is 'profile'.
+ * @param $url
+ *   Complete URL to be used for a link or form action on a custom page,
+ *   if providing any, to allow the user to proceed with the installation.
+ *
+ * @return
+ *   An optional HTML string to display to the user. Only used if you
+ *   modify the $task, otherwise discarded.
+ */
+function sb_profile_tasks(&$task, $url) {  
+  //Todo: Set settings 
+  //Todo: (optional) Create Small Business theme
+  
+  $site_name = variable_get('site_name', "Example Company");
+  variable_set('site_footer', st('Copyright &copy; 2007 ').$site_name);
+  
+  $node_types = array( //This is where all the node types go
+    array(
+      'type' => 'page',
+      'name' => st('Page'),
+      'module' => 'node',
+      'description' => st("Use this node to create static pages. This page doesn't allow comments and doesn't get featured on the front page."),
+      'custom' => TRUE,
+      'modified' => TRUE,
+      'locked' => FALSE,
+      'help' => '',
+	  'min_word_count' => '',
+	),
+	array(
+      'type' => 'story',
+      'name' => st('Blog'),
+	  'module' => 'node',
+      'description' => st("Use this node type to publish day to day updates. This type will feature on the front page and allows comments."),
+      'custom' => TRUE,
+      'modified' => TRUE,
+      'locked' => FALSE,
+      'help' => '',
+      'min_word_count' => '',
+	),
+   );
+
+   foreach ($node_types as $type) {
+     $type = (object) _node_type_set_defaults($type);
+     node_type_save($type);
+   }
+   menu_rebuild();
+   
+   //Create nodes (About us....)
+   $nodes = array(
+     array(
+       'nid' => 1,
+       'vid' => 1,
+       'status' => 1,
+       'promote' => 0,
+       'sticky' => 0,
+       'type' => 'page',
+       'title' => st('About Us'),
+       'body' => st("This is a page describing what the company does. 
+Some possible content may include history of the company, location, and testimonials.
+Modify this page with your own content."),
+     ),
+     array(
+       'nid' => 2,
+       'vid' => 2,
+       'status' => 1,
+       'promote' => 0,
+       'sticky' => 0,
+       'type' => 'page',
+       'title' => st('Contact Us'),
+       'body' => st("Contact ".variable_get('site_name', "Example Site").":
+    
+    890 Nowhere Drive
+    P.O. Box 485
+    Schenectady, NY 12345
+    (678) 901-2345
+    ".variable_get('site_mail', "sales@example.com")."
+	Edit this page with your content"),
+	 ),
+     array(
+	   'nid' => 3,
+	   'vid' => 3,
+	   'status' => 1,
+	   'promote' => 0,
+	   'sticky' => 0,
+	   'type' => 'page',
+	   'title' => st('Services Offered'),
+	   'body' => st("This page is to tell your visitors what services you offer.
+    
+<h3>Sample Service</h3>
+Services can be separated by headings, as shown above.
+    
+<h3>Sample Service 2</h3>
+When writing service descriptions, you should include either prices or e-mails to get quotes, especially to a member of your business in that department. Also add details.','This page is to tell your visitors what services you offer.
+   
+<h3>Sample Service</h3>
+Services can be separated by headings, as shown above.
+    
+<h3>Sample Service 2</h3>
+When writing service descriptions, you should include either prices or e-mails to get quotes, especially to a member of your business in that department. Also add details."),
+	 ),
+	 array(
+	   'nid' => 4,
+	   'vid' => 4,
+	   'status' => 1,
+	   'promote' => 0,
+	   'sticky' => 0,
+	   'type' => 'page',
+	   'title' => st('Latest News'),
+	   'body' => st("Put all your news here"),
+	 ),
+	 array(
+	   'nid' => 5,
+	   'vid' => 5,
+	   'status' => 1,
+	   'promote' => 1,
+	   'sticky' => 0,
+	   'type' => 'story',
+	   'title' => st('Welcome'),
+	   'body' => st("Welcome to this new Small Business website. You can change this content in the Administration."),
+	   'teaser' => st("Welcome to this new Small Business website. You can change this content in the Administration."),
+	 ),
+   );
+   
+   $time = time();
+   foreach ($nodes as $node) {
+     //$node = node_submit($node); //Doesn't seem to work using db_query instead to directly insert data
+	 //node_save($node);
+	 
+	 create_new_node($node);
+
+	 if($node['type'] == "page") { //This links the newly created node to the primary-link
+	   $links = array(
+	     'menu_name' => 'primary-links',
+	     'link_path' => 'node/'.$node['nid'],
+	     'link_title' => $node['title'],
+	   );
+	   menu_link_save($links);
+	 }
+   }
+   create_new_node( array( //Creates error pages
+     'nid' => 6,
+	 'vid' => 6,
+	 'status' => 1,
+	 'promote' => 0,
+	 'sticky' => 0,
+	 'type' => 'page',
+	 'title' => st('Page Not Found'),
+	 'body' => st("Oops!! It looks as the page you are a looking for no longer exists or your URL is
+     incorrectly formatted"),
+   ));
+   create_new_node( array( //Creates error pages
+     'nid' => 7,
+	 'vid' => 7,
+	 'status' => 1,
+	 'promote' => 0,
+	 'sticky' => 0,
+	 'type' => 'page',
+	 'title' => st('Access Denied'),
+	 'body' => st("You're not authorised to view this page"),
+   ));
+   variable_set('site_404', 'node/6');
+   variable_set('site_403', 'node/7');
+   //variable_set('theme_default', 'pushbutton'); //Disables the navigation menu when done this way
+}
+?>
\ No newline at end of file
