diff --git a/erpnext/commands/__init__.py b/erpnext/commands/__init__.py
new file mode 100644
index 0000000..6ffa6a3
--- /dev/null
+++ b/erpnext/commands/__init__.py
@@ -0,0 +1,45 @@
+# Copyright (c) 2015, Web Notes Technologies Pvt. Ltd. and Contributors
+# MIT License. See license.txt
+
+from __future__ import unicode_literals, absolute_import, print_function
+import click
+import frappe
+from frappe.commands import pass_context, get_site
+
+def call_command(cmd, context):
+	return click.Context(cmd, obj=context).forward(cmd)
+
+@click.command('make-demo')
+@click.option('--site', help='site name')
+@click.option('--domain', default='Manufacturing')
+@click.option('--days', default=100,
+	help='Run the demo for so many days. Default 100')
+@click.option('--resume', default=False, is_flag=True,
+	help='Continue running the demo for given days')
+@pass_context
+def make_demo(context, site, domain='Manufacturing', days=100, resume=False):
+	"Reinstall site and setup demo"
+	from frappe.commands.site import _reinstall
+	from frappe.installer import install_app
+
+	site = get_site(context)
+
+	if resume:
+		with frappe.init_site(site):
+			frappe.connect()
+			from erpnext.demo import demo
+			demo.simulate(days=days)
+	else:
+		_reinstall(site, yes=True)
+		with frappe.init_site(site=site):
+			frappe.connect()
+			if not 'erpnext' in frappe.get_installed_apps():
+				install_app('erpnext')
+
+			# import needs site
+			from erpnext.demo import demo
+			demo.make(domain, days)
+
+commands = [
+	make_demo
+]
\ No newline at end of file
diff --git a/erpnext/demo/demo.py b/erpnext/demo/demo.py
index a270e05..9fde264 100644
--- a/erpnext/demo/demo.py
+++ b/erpnext/demo/demo.py
@@ -22,7 +22,7 @@
 
 """
 
-def make(domain='Manufacturing'):
+def make(domain='Manufacturing', days=100):
 	frappe.flags.domain = domain
 	frappe.flags.mute_emails = True
 	setup_data.setup(domain)
@@ -36,16 +36,17 @@
 	frappe.init(site)
 	frappe.connect()
 
-	simulate(domain)
+	simulate(domain, days)
 
-def simulate(domain='Manufacturing'):
-	runs_for = frappe.flags.runs_for or 150
+def simulate(domain='Manufacturing', days=100):
+	runs_for = frappe.flags.runs_for or days
 	frappe.flags.company = erpnext.get_default_company()
 	frappe.flags.mute_emails = True
 
 	if not frappe.flags.start_date:
 		# start date = 100 days back
-		frappe.flags.start_date = frappe.utils.add_days(frappe.utils.nowdate(), -1 * runs_for)
+		frappe.flags.start_date = frappe.utils.add_days(frappe.utils.nowdate(),
+			-1 * runs_for)
 
 	current_date = frappe.utils.getdate(frappe.flags.start_date)
 
