diff --git a/defaults/main.yml b/defaults/main.yml
index 392ec597eb71b267e1361f3e9eef26896e123995..a971ef2101a39c92a9cb35517f5cd29de8fcf60c 100644
--- a/defaults/main.yml
+++ b/defaults/main.yml
@@ -1 +1,11 @@
 files: {}
+
+files_default:
+  group: root
+  owner: root
+  mode: "0700"
+  state: touch
+  src: ~
+  content: ~
+  template: ~
+  template_vars: {}
diff --git a/tasks/file.yml b/tasks/file.yml
index 8efd28ca8f2f40a012c935b64672fa7b474ada1f..fcc3991cca7fe2c3a0f8859f8e9ff5bc88441d5d 100644
--- a/tasks/file.yml
+++ b/tasks/file.yml
@@ -1,22 +1,10 @@
 - set_fact:
-    defaultfile:
-      group: root
-      owner: root
-      mode: "0700"
-      state: touch
-      src: ~
-      content: ~
-      template: ~
-      template_vars: {}
+    file: "{{ {}|combine(files_default, item.value|d({}), {'path': item.key} ) }}"
 
-- set_fact:
-    file: "{{ defaultfile|combine(item.value|d({}), {'path': item.key} ) }}"
-
-- name: create file/folder
+- name: "create file/folder (file module, {{ file.path }})"
   when:
     - not file.content
     - not file.template
-    - not file.src
   file:
     path: "{{ file.path }}"
     group: "{{ file.group }}"
@@ -25,23 +13,14 @@
     src: "{{ file.src }}"
     state: "{{ file.state }}"
 
-- name: create file/folder
+- name: "create file/folder (copy module, {{ file.path }})"
   when:
-    - file.content
-    - not file.src
+    - file.content or  file.src
+    - file.state != 'link'
   copy:
     dest: "{{ file.path }}"
     group: "{{ file.group }}"
     owner: "{{ file.owner }}"
     mode: "{{ file.mode }}"
     content: "{{ file.content }}"
-
-- name: create file/folder
-  when:
-    - file.src
-  copy:
-    dest: "{{ file.path }}"
-    group: "{{ file.group }}"
-    owner: "{{ file.owner }}"
-    mode: "{{ file.mode }}"
-    src: "{{ file.src }}"
\ No newline at end of file
+    src: "{{ file.src }}"