diff --git a/less.module b/less.module
index fadbcc4..24fdb56 100644
--- a/less.module
+++ b/less.module
@@ -56,17 +56,19 @@ function _less_build(&$vars, $hook) {
 
   $css = $vars['css'];
 
-  $less_path = file_directory_path() .'/less';
-
+  $devel = variable_get('less_devel', FALSE);
+  $less_dir = variable_get('less_dir', '');
   // Flush compiled LESS files if developer mode is enabled
-  if (variable_get('less_devel', FALSE)) {
-    _less_recursive_delete($less_path);
-    if (user_access(LESS_PERMISSION) && flood_is_allowed('less_devel_warning', 1)) {
+  if (!$less_dir || $devel) {
+    $less_dir = _less_new_dir();
+    if ($devel && user_access(LESS_PERMISSION) && flood_is_allowed('less_devel_warning', 1)) {
       flood_register_event('less_devel_warning');
       drupal_set_message(t('LESS files are being regenerated on every request. Remember to <a href="!url">turn off</a> this feature on production websites.', array("!url" => url('admin/settings/less'))), 'status');
     }
   }
 
+  $less_path = file_directory_path() .'/less/' . $less_dir;
+
   foreach ($css as $media => $types) {
     foreach ($types as $type => $files) {
 
@@ -194,13 +196,36 @@ function _less_recursive_delete($path) {
 function less_flush_caches() {
   $semaphore = variable_get('cron_semaphore', FALSE);
   if (!$semaphore) {
-    // Delete all generated files.
-    _less_recursive_delete(file_directory_path() . '/less');
+    _less_new_dir();
   }
   return array();
 }
 
 /**
+ * Helper function to create a new less dir.
+ */
+function _less_new_dir() {
+  $less_dir = (string) microtime(TRUE);
+  $less_path = file_directory_path() .'/less/' . $less_dir;
+  file_check_directory($less_path);
+  variable_set('less_dir', $less_dir);
+  return $less_dir;
+}
+
+/**
+ * Implements hook_cron().
+ */
+function less_cron() {
+  $less_dir = variable_get('less_dir', '');
+  foreach (new DirectoryIterator(file_directory_path() . '/less') as $file) {
+    $filename = $file->getFilename();
+    if ($less_dir != $filename && preg_match('|^(\d+)\.\d+$|', $filename, $matches) && time() - $matches[1] > 900) {
+      _less_recursive_delete($file->getPathName());
+    }
+  }
+}
+
+/**
  * Implementation of hook_requirements().
  *
  * @param $phase The phase in which hook_requirements is run: install or runtime.
