@Override
    public List<SkinPreviewVO> getAvailableSkins() {
        cleanModel();

        List<SkinPreviewVO> previews = new LinkedList<SkinPreviewVO>();
        try (DirectoryStream<Path> dir = Files.newDirectoryStream(Constants.PROGRAM_SKINS_PATH)) {
            for (Path path : dir) {
                if (path.getFileName().toString().endsWith(Constants.SKINFILE_SUFFIX)) {
                    Path previewPath = ZipSkinLoader.unpackFileFromSkin(path); // unpack and read the preview file.
                    if (previewPath != null) {
                        previews.add(new SkinPreviewVO(previewPath));

                    } else {
                        continue;
                    }
                }
            }
            dir.close();

        } catch (IOException e) {
            Main.handleUnhandableProblem(e);
        }

        return previews;
    }