 			Documents[@id] = @
 		next()  if next
 
+
 	# Handle
 	action: (action) ->
+		# Clear
+		if @actionTimeout
+			clearTimeout(@actionTimeout)
+			@actionTimeout = null
+
+		# Check
+		if @loading
+			logger.log 'notice', 'Action received, but we still loading... waiting...'
+			@actionTimeout = setTimeout(
+				=>
+					@action action
+				500
+			)
+			return
+		
+		# Handle
 		switch action
 			when 'skeleton', 'scaffold'
 				@skeletonAction (err) ->

	generating: false
	loading: true
	generateTimeout: null
	server: null
	port: 9778


		# Options
		@PluginsArray = []
		@PluginsObject = {}
		@port = port  if port
		@maxAge = maxAge  if maxAge
		@server = server  if server
		@rootPath = path.normalize(rootPath || process.cwd())
		@outPath = path.normalize(outPath || "#{@rootPath}/#{@outPath}")
		@srcPath = path.normalize(srcPath || "#{@rootPath}/#{@srcPath}")

		logger = new caterpillar.Logger
			transports:
				level: logLevel or @logLevel
				formatter:
					module: module
		
		@initSkeletons =>
			@skeletonsPath = path.normalize(skeletonsPath || @skeletonsPath)
			@skeletonPath = util.prefixPathSync(
				path.normalize(skeletonPath || @skeletonPath),
				@skeletonsPath
			)
			@loadPlugins null, =>
				logger.log 'info', 'Finished loading'
				@loading = false
	
	
	# Initialise the Skeletons
	initSkeletons: (next) ->
		child = exec 'git submodule init; git submodule update', {cwd: @corePath}, (err,stdout,stderr) =>
		child.on 'exit', (code,signal) ->
			next()

	# Clean Models
	cleanModels: (next) ->
