diff --git a/package.json b/package.json
index a96be8417dcda29b7f43758da061b5292c41dcca..1c090193188a1fab84dfd655650905e852ecec10 100644
--- a/package.json
+++ b/package.json
@@ -12,7 +12,6 @@
     "chokidar": "^1.4.2",
     "express": "^4.13.4",
     "highlight.js": "^9.2.0",
-    "lwip": "0.0.8",
     "marked": "^0.3.5",
     "mkdirp": "^0.5.1",
     "moment": "^2.11.2",
@@ -30,5 +29,8 @@
     "istanbul": "^0.4.2",
     "mocha": "^2.3.4",
     "unit.js": "^2.0.0"
+  },
+  "optionalDependencies": {
+    "lwip": "0.0.8"
   }
 }
diff --git a/sitegin/transformer-images.js b/sitegin/transformer-images.js
index 223030ab79ced7832afc14d08ac4e44f3df30a7e..9a16047ca9fa61521fd1f7eb6a80915f6f52597c 100644
--- a/sitegin/transformer-images.js
+++ b/sitegin/transformer-images.js
@@ -1,5 +1,12 @@
 var input = new (require('./input-hugo'));
-var lwip = require('lwip');
+var lwip;
+try {lwip = require('lwip');}
+catch(e) {
+  lwip = null
+  console.log("WARNING! LWIP is not installed - image minification won't work.");
+  console.log("You can try to run npm install.");
+  console.log("If it doesn't help try to make npm install lwip work.");
+}
 var path = require('path');
 
 var builddir = "build";
@@ -21,40 +28,50 @@ var minify = function() {
   })).then(function(fileList) {
     var promises = [];
     fileList.forEach((file) => {
+      file = file.split(path.sep).join('/');
       var f = file.split(".");
       var ext = f.splice(-1,1);
       f = f.join(".");
       f = f+"_thumbnail."+ext;
-      f = f.split(path.sep);
+      f = f.split('/');
       f.splice(0,1,builddir);
-      f = f.join(path.sep).replace('articles','clanek');
-      
+      f = f.join('/').replace('articles','clanek');
+
       var minifyPromise = function(resolve, reject) {
-        lwip.open(file, function(err, image) {
-          if(err) throw err;
-          var w = image.width(), h = image.height();
-          if(w <= 512) {
-            file = file.replace("static"+path.sep,"").replace('articles','clanek');
-            resolve({
-              minified: false,
-              file: file,
-              thumb: file
-            });
-          } else {
-            image.batch()
-            .resize(512, Math.round(512*h/w))
-            .writeFile(f, function(err) {
-              if(err) throw err;
+        if(lwip) {
+          lwip.open(file, function(err, image) {
+            if(err) throw err;
+            var w = image.width(), h = image.height();
+            if(w <= 512) {
+              file = file.replace("static/","").replace('articles','clanek');
               resolve({
-                minified: true,
-                file: file.replace("static"+path.sep,"").replace('articles','clanek'),
-                thumb: f.replace(builddir+path.sep,"")
+                minified: false,
+                file: file,
+                thumb: file
+              });
+            } else {
+              image.batch()
+              .resize(512, Math.round(512*h/w))
+              .writeFile(f, function(err) {
+                if(err) throw err;
+                resolve({
+                  minified: true,
+                  file: file.replace("static/","").replace('articles','clanek'),
+                  thumb: f.replace(builddir+'/',"")
+                });
               });
-            });
-          }
-        })
+            }
+          })
+        } else {
+          file = file.replace("static/","").replace('articles','clanek');
+          resolve({
+            minified: false,
+            file: file,
+            thumb: file
+          });
+        }
       }
-      
+
       promises.push(new Promise(minifyPromise));
     });
     return Promise.all(promises);
@@ -73,4 +90,3 @@ module.exports = function() {
     .catch(function(err) {console.log(err.stack); cb();});
   }
 }
-
diff --git a/sitegin/transformer-markdown.js b/sitegin/transformer-markdown.js
index f1dbfe5ff7668aced2a91a11a1fe4da1d12eaf82..7f549d7bc8a457f6de506d12511b67cded7e5b2b 100644
--- a/sitegin/transformer-markdown.js
+++ b/sitegin/transformer-markdown.js
@@ -3,6 +3,11 @@ var renderer = new marked.Renderer();
 var toURL = require('./transformer-urlizetags.js').toURL;
 var highlightjs = require('highlight.js');
 var path = require('path');
+var minificationOK = true;
+try {require('lwip');}
+catch(e) {
+  minificationOK = false;
+}
 
 var images = {};
 
@@ -37,18 +42,23 @@ module.exports = function() {
     list.images.forEach((img) => {
       images[img.file] = img;
     });
+    console.log(images);
     cb();
   };
   tr.forEachPage = function(article, cb) {
     article.origContent = article.content;
     renderer.image = function(href, title, text) {
+      href = href.split(path.sep).join("/");
       var rel = path.relative(process.cwd(),path.resolve(article.file,href));
+      rel = rel.split(path.sep).join("/");
       var img = images[rel];
       var full;
       if(img) {
         if(img.minified) {
           full = href;
           href = path.relative(article.file, img.thumb);
+        }else if(!minificationOK) {
+          full = href;
         }
       }
       else if(process.argv[3] !== "final") {
@@ -56,11 +66,14 @@ module.exports = function() {
           href = "https://ok1kvk.cz"+href;
         }
       }
-      
+
       var out = '<img src="' + href + '" alt="' + text + '"';
       if (title) {
         out += ' title="' + title + '"';
       }
+      if(!minificationOK) {
+        out += ' style="max-width:512px"';
+      }
       out += '>';
       if(full) {
         var a = '<a href="'+full+'"';
@@ -69,10 +82,10 @@ module.exports = function() {
         a += '>';
         out = a+out+'</a>';
       }
-      
+
       return out;
     };
-    
+
     article.content = marked(article.content, {
       highlight: function (code) {
         var h;
@@ -87,4 +100,3 @@ module.exports = function() {
     cb();
   }
 }
-
diff --git a/sitegin/transformer-other.js b/sitegin/transformer-other.js
index 669989d09d892633d8b5e10b929de0a4308d0af6..b948057ec99cb5ecf3d99abae11e069f042da897 100644
--- a/sitegin/transformer-other.js
+++ b/sitegin/transformer-other.js
@@ -1,8 +1,10 @@
+var path = require('path');
 module.exports = function() {
   var tr = this;
   tr.fancyname = "transformer other";
   tr.forEachPage = function(article, cb) {
     var img = article.metadata.image;
+    article.file = article.file.split(path.sep).join("/");
     if(img) {
       if(!img.match(/^\//)) {
         article.metadata.image = article.file+"/"+img;
@@ -10,8 +12,7 @@ module.exports = function() {
         article.metadata.image = img.replace("/","");
       }
     }
-    
+
     cb();
   }
 }
-