filepicker downloading is on panel initialization now; post button enabling replaced
diff --git a/sdk-derived/controls/card-composer.js b/sdk-derived/controls/card-composer.js
index dec7aaa..15ef0fd 100644
--- a/sdk-derived/controls/card-composer.js
+++ b/sdk-derived/controls/card-composer.js
@@ -579,6 +579,15 @@
 		return element;
 	}
 
+	var refreshPostButtonState = function() {
+		var mediaRequired = self.currentComposer && self.currentComposer.requiresMedia;
+		if (mediaRequired && !self.formData.media.length) {
+			self.disablePostButtonBy("media-required");
+		} else {
+			self.enablePostButtonBy("media-required");
+		}
+	};
+
 	this.mediaContainer = new Echo.StreamServer.Controls.MediaContainer({
 		"target": element.empty(),
 		"data": this.formData.media,
@@ -588,13 +597,7 @@
 			"displayAuthor": false,
 			"onRemove": function(data) {
 				self.removeMedia(self._getDefinedMediaIndex(data));
-				/**
-				 * @echo_event Echo.StreamServer.Controls.CardComposer.onMediaDetached
-				 * Triggered when attached media preview was removed
-				 */
-				self.events.publish({
-					"topic": "onMediaDetached"
-				});
+				refreshPostButtonState();
 			}
 		},
 		"ready": function() {
@@ -603,13 +606,6 @@
 					self.currentComposer.initMedia();
 				}, 0);
 			}
-			/**
-			 * @echo_event Echo.StreamServer.Controls.CardComposer.onMediaContainerReady
-			 * Triggered when attached media was resolved
-			 */
-			self.events.publish({
-				"topic": "onMediaContainerReady"
-			});
 			self.enablePostButtonBy("media-required");
 		}
 	});
@@ -1094,7 +1090,7 @@
 	//TODO: we shoud save states for each single composer and refresh media container due to that states...
 	if (this.mediaContainer) {
 		this.mediaContainer.clearOut();
-		// TODO: this is a bad move. We shoud reduce fasciation in it
+		// TODO: this is a bad move. We shoud reduce enchainment here (m.b. using Events)
 		if (typeof composer.initMedia === "function" && composer.requiresMedia) {
 			composer.initMedia();
 		}
diff --git a/sdk-derived/controls/media-container.js b/sdk-derived/controls/media-container.js
index ea27b04..eacfdcd 100644
--- a/sdk-derived/controls/media-container.js
+++ b/sdk-derived/controls/media-container.js
@@ -8,11 +8,6 @@
 media.dependencies = [{
 	"url": "{%= baseURLs.prod %}/sdk-derived/controls/nested-card.js",
 	"loaded": function() { return !!Echo.StreamServer.Controls.NestedCard; }
-}, { // TODO: replace it into "initAttachmentsPanel" call
-	"url": "//api.filepicker.io/v1/filepicker.js",
-	"loaded": function() {
-		return !!(window.filepicker && window.filepicker.pick);
-	}
 }];
 
 media.labels = {
@@ -122,7 +117,6 @@
 
 media.methods.updateAttachments = function(attachments) {
 	attachments = attachments || [];
-	// TODO: not sure that we have to do it
 	this.config.set("data", attachments);
 	this.view.render({"name": "container"});
 };
@@ -131,6 +125,7 @@
 	if (this.get("attachmentsPanel.isActive")) return;
 	var container = this.view.get("container");
 	var panel = this._getAttachmentsPanel();
+	var self = this;
 	this.set("attachmentsPanel.isActive", true);
 	this.set("attachmentsPanel.allowMultiple", panelConfig.allowMultiple || false);
 	container.append(panel);
@@ -142,7 +137,11 @@
 		container.removeClass(this.cssPrefix + "single")
 			.addClass(this.cssPrefix + "multiple");
 	}
-	this._initFilePickerPanel(panel, panelConfig);
+	Echo.Loader.download([{
+		"url": "//api.filepicker.io/v1/filepicker.js"
+	}], function() {
+		self._initFilePickerPanel(panel, panelConfig);
+	});
 };
 
 media.methods._showAttachmentsPanel = function() {
diff --git a/sdk-derived/plugins/cards/photo-card.js b/sdk-derived/plugins/cards/photo-card.js
index 7022cdd..e07858b 100644
--- a/sdk-derived/plugins/cards/photo-card.js
+++ b/sdk-derived/plugins/cards/photo-card.js
@@ -290,8 +290,8 @@
 					}),
 					"removeOld": true
 				});
-				// TODO: replace it in any way to the end of resolving...
 				self.component.enablePostButtonBy("photo-uploading");
+				self.component.enablePostButtonBy("media-required");
 
 			},
 			"onError": function(type, message) {
@@ -312,8 +312,8 @@
 					"urls": [InkBlob.url],
 					"removeOld": true
 				});
-				// TODO: replace it in any way to the end of resolving...
 				self.component.enablePostButtonBy("photo-uploading");
+				self.component.enablePostButtonBy("media-required");
 			},
 			"onError": function(err) {
 				self.component.enablePostButtonBy("photo-uploading");