diff --git a/MediaFlickrStreamWrapper.inc b/MediaFlickrStreamWrapper.inc
deleted file mode 100644
index fc97319..0000000
--- a/MediaFlickrStreamWrapper.inc
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-/**
- *  @file
- *  Create a Flickr Stream Wrapper class for the Media/Resource module.
- */
-
-/**
- *  Create an instance like this:
- *  $youtube = new ResourceYouTubeStreamWrapper('flickr://u/[user-code]/p/[photo-code]');
- */
-class MediaFlickrStreamWrapper extends MediaReadOnlyStreamWrapper {
-  protected $base_url = 'http://www.flickr.com/';
-
-  function interpolateUrl() {
-    if (isset($this->parameters['p'])) {
-      return $this->base_url . 'photos/' . check_plain($this->parameters['u']) . '/' . check_plain($this->parameters['p']);
-    }
-  }
-  
-  function getTarget($f) {
-    return FALSE;  
-  }
-  
-  static function getMimeType($uri, $mapping = NULL) {
-    return 'image/jpeg';
-  }
-}
diff --git a/README.txt b/README.txt
old mode 100644
new mode 100755
diff --git a/images/stream-flickr.png b/images/stream-flickr.png
old mode 100644
new mode 100755
diff --git a/includes/MediaFlickrStreamWrapper.inc b/includes/MediaFlickrStreamWrapper.inc
new file mode 100755
index 0000000..6858bc8
--- /dev/null
+++ b/includes/MediaFlickrStreamWrapper.inc
@@ -0,0 +1,51 @@
+<?php
+
+/**
+ *  @file
+ *  Create a Flickr Stream Wrapper class for the Media/Resource module.
+ */
+
+/**
+ *  Create an instance like this:
+ *  $youtube = new ResourceYouTubeStreamWrapper('flickr://u/[user-code]/p/[photo-code]');
+ */
+class MediaFlickrStreamWrapper extends MediaReadOnlyStreamWrapper {
+  protected $base_url = 'http://www.flickr.com/';
+  protected $parameters = array('p','u');
+  function interpolateUrl() {
+    if (isset($this->parameters['p'])) {
+      return $this->base_url . 'photos/' . check_plain($this->parameters['u']) . '/' . check_plain($this->parameters['p']);
+    }
+  }
+
+  function getTarget($f) {
+    return FALSE;
+  }
+  /*
+   * get the url of the original image
+   */
+  function getExternalUrl(){
+	module_load_include('inc', 'media_flickr', 'media_flickr.utilities');
+	$url =  _media_flickr_photo_url(basename($this->uri));
+	return $url;
+  }
+  function getOriginalThumbnailPath() {
+    module_load_include('inc', 'media_flickr', 'media_flickr.utilities');
+    $url =  _media_flickr_photo_url(basename($this->uri));
+    return $url;
+  }
+
+  function getLocalThumbnailPath() {
+    $parts = $this->get_parameters();
+    $local_path = 'public://media-flickr/u/' . check_plain($parts['u']) . '/p/' . check_plain($parts['p']) . '.jpg';
+    if (!file_exists($local_path)) {
+	  $dirname = drupal_dirname($local_path);
+	  file_prepare_directory($dirname, FILE_CREATE_DIRECTORY | FILE_MODIFY_PERMISSIONS);
+	  @copy($this->getOriginalThumbnailPath(), $local_path);
+	}
+	return $local_path;
+  }
+  static function getMimeType($uri, $mapping = NULL) {
+    return 'image/jpeg';
+  }
+}
diff --git a/includes/MediaFlickrStyles.inc b/includes/MediaFlickrStyles.inc
new file mode 100755
index 0000000..91e3408
--- /dev/null
+++ b/includes/MediaFlickrStyles.inc
@@ -0,0 +1,24 @@
+<?php
+class MediaFlickrStyles extends FileStyles {
+
+    function getImageUri() {
+        if ($image_uri = $this->get('imageUri')) {
+            return $image_uri;
+        }
+        $object = $this->getObject();
+        if ($object->uri) {
+            $wrapper = file_stream_wrapper_get_instance_by_uri($object->uri);
+            return $wrapper->getLocalThumbnailPath();
+        }
+    }
+    function flickr_image($effect) {
+        $variables = array(
+            'uri' => $this->getUri(),
+            'width' => $this->getWidth(),
+            'height' => $this->getHeight(),
+        );
+        $variables = array_merge($variables, $this->variables);
+        $this->setOutput(theme('media_flickr_embed', $variables));
+    }
+}  
+?>
\ No newline at end of file
diff --git a/includes/MediaInternetFlickrHandler.inc b/includes/MediaInternetFlickrHandler.inc
new file mode 100755
index 0000000..b75fa5c
--- /dev/null
+++ b/includes/MediaInternetFlickrHandler.inc
@@ -0,0 +1,48 @@
+<?php
+class MediaInternetFlickrHandler extends MediaInternetBaseHandler {
+  public function parse($embedCode) {
+    $patterns = array(
+      '@flickr\.com/photos/([0-9A-Za-z\@\&\$]+)/([0-9]+)@i',
+      '@flickr\.com/photos/([0-9A-Za-z\@\&\$]+)/([0-9]+)/in/photostream@i',
+      '@flickr\.com/photos/([0-9A-Za-z\@\&\$]+)/([0-9]+)/in/set-([0-9]+)@i',      
+    );
+    foreach ($patterns as $pattern) {
+      preg_match($pattern, $embedCode, $matches);
+      if (isset($matches[1]) && isset($matches[2])) {
+        return file_stream_wrapper_uri_normalize('flickr://u/' . $matches[1] . "/p/" . $matches[2]);
+      }
+    }
+  }
+
+  public function claim($embedCode) {
+    if ($this->parse($embedCode)) {
+      return TRUE;
+    }
+  }
+  
+  public function validate() {
+    // @todo Media module currently fails when two files try to have the same
+    //   URI, so catch that in the validation step. Some day, it would be nice
+    //   to allow it, however. See http://drupal.org/node/952422.
+    $uri = $this->parse($this->embedCode);
+    $existing_files = file_load_multiple(array(), array('uri' => $uri));
+    if (count($existing_files)) {
+      throw new MediaInternetValidationException(t('You have entered a URL for a image that is already in your library.'));
+    }
+  }
+  
+  public function save() {
+    $file = $this->getFileObject();
+    file_save($file);
+    return $file;
+  }
+
+  public function getFileObject() {
+    $uri = $this->parse($this->embedCode);
+    krumo($uri);
+    //@todo: this is terribly broken in some ways because the function is really
+    // made for local files which are 'real'
+    return file_uri_to_object($uri);
+  }
+}  
+?>
diff --git a/includes/media_flickr.styles.inc b/includes/media_flickr.styles.inc
new file mode 100755
index 0000000..298130a
--- /dev/null
+++ b/includes/media_flickr.styles.inc
@@ -0,0 +1,101 @@
+<?php
+// $Id:$
+
+/**
+ * @file media_flickr/includes/media_flickr.styles.inc
+ * Styles definitions for Media: Flickr.
+ */
+
+/**
+ * Implementation of Styles module hook_styles_default_containers().
+ */
+function media_flickr_styles_default_containers() {
+	// We append Flickr to the file containers.
+	return array(
+	  'file' => array(
+	    'containers' => array(
+	      'media_flickr' => array(
+	        'class' => 'MediaFlickrStyles',
+	        'name' => 'media_flickr',
+	        'label' => t('Flickr'),
+	        'preview' => 'media_flickr_preview_style',
+	      ),
+	    ),
+	  ),
+	);
+}
+
+/**
+ * Implementation of Styles module hook_styles_default_presets().
+ */
+function media_flickr_styles_default_presets() {
+  $presets = array(
+    'file' => array(
+      'containers' => array(
+        'media_flickr' => array(
+          'default preset' => 'unlinked_thumbnail',
+          'styles' => array(
+            'original' => array(
+              'default preset' => 'flickr_image',
+            ),
+            'thumbnail' => array(
+              'default preset' => 'linked_thumbnail',
+            ),
+            'square_thumbnail' => array(
+              'default preset' => 'linked_square_thumbnail',
+            ),
+            'medium' => array(
+              'default preset' => 'linked_medium',
+            ),
+            'large' => array(
+              'default preset' => 'large_flickr_image',
+            ),
+          ),
+          'presets' => array(            
+            'flickr_image' => array(
+              array(
+                'name' => 'flickr_image',
+                'settings' => array(),
+              ),
+            ),
+            'large_flickr_image' => array(
+              array(
+                'name' => 'resize',
+                'settings' => array(
+                  'width' => 640,
+                ),
+              ),
+              array(
+                'name' => 'flickr_image',
+                'settings' => array(),
+              ),
+            ),
+          ),
+        ),
+      ),
+    ),
+  );
+  // Allow any image style to be applied to the thumbnail.
+  foreach (image_styles() as $style_name => $image_style) {
+    $presets['file']['containers']['media_flickr']['presets']['linked_' . $style_name] = array(
+      array(
+        'name' => 'linkToMedia',
+        'settings' => array(),
+      ),
+      array(
+        'name' => 'imageStyle',
+        'settings' => array(
+          'image_style' => $style_name,
+        ),
+      ),
+      array(
+        'name' => 'thumbnail',
+        'settings' => array(),
+      ),
+    );
+    $presets['file']['containers']['media_flickr']['presets']['unlinked_' . $style_name] = $presets['file']['containers']['media_flickr']['presets']['linked_' . $style_name];
+    array_shift($presets['file']['containers']['media_flickr']['presets']['unlinked_' . $style_name]);
+  }
+  return $presets;
+}
+
diff --git a/includes/media_flickr.variables.inc b/includes/media_flickr.variables.inc
old mode 100644
new mode 100755
diff --git a/javascript/media_flickr.fromurl.js b/javascript/media_flickr.fromurl.js
old mode 100644
new mode 100755
diff --git a/media_flickr.admin.inc b/media_flickr.admin.inc
old mode 100644
new mode 100755
diff --git a/media_flickr.info b/media_flickr.info
old mode 100644
new mode 100755
index fb0d8f4..e041356
--- a/media_flickr.info
+++ b/media_flickr.info
@@ -4,7 +4,17 @@ description = Integrates Flickr.com photos and photosets with Media.
 core = 7.x
 dependencies[] = media_internet
 files[] = media_flickr.module
-files[] = MediaFlickrStreamWrapper.inc
 files[] = media_flickr.admin.inc
 files[] = media_flickr.utilities.inc
+files[] = includes/MediaFlickrStreamWrapper.inc
+files[] = includes/MediaFlickrStyles.inc
+files[] = includes/MediaInternetFlickrHandler.inc
+files[] = includes/media_flickr.styles.inc
 package = "Media"
+
+; Information added by drupal.org packaging script on 2011-02-25
+version = "7.x-1.x-dev"
+core = "7.x"
+project = "media_flickr"
+datestamp = "1298619620"
+
diff --git a/media_flickr.module b/media_flickr.module
old mode 100644
new mode 100755
index 574a27f..09f9d88
--- a/media_flickr.module
+++ b/media_flickr.module
@@ -46,7 +46,6 @@ function media_flickr_menu() {
  *  Create stream wrapper for Flickr videos.
  */
 function media_flickr_stream_wrappers() {
-  stream_wrapper_register('flickr', 'MediaFlickrStreamWrapper');
   return array(
     'flickr' => array(
       'name' => t('Flickr photos'),
@@ -78,7 +77,28 @@ function media_flickr_theme($existing, $type, $theme, $path) {
     ),
   );
 }
-
+/**
+ * Implementation of Styles module hook_styles_register().
+ */
+function media_flickr_styles_register() {
+	return array(
+	  'MediaFlickrStyles' => array(
+	    'field_types' => 'file',
+	    'name' => t('MediaFlickr'),
+	    'description' => t('Media Flickr styles.'),
+	    'path' => drupal_get_path('module', 'media_flickr') .'/includes',
+	    'file' => 'media_flickr.styles.inc',
+	  ),
+	);
+}
+/**
+ * Implementation of the File Styles module's hook_file_styles_filter().
+ */
+function media_flickr_file_styles_filter($object) {
+	if ((file_uri_scheme($object->uri) == 'flickr') && ($object->filemime == 'image/jpeg')) {
+		return 'media_flickr';
+	}
+}
 function theme_media_flickr_field_formatter_styles($variables) {
   $element = $variables['element'];
   $style = $variables['style'];
@@ -112,61 +132,70 @@ function theme_media_flickr_styles($variables) {
 }
 
 function theme_media_flickr_embed($variables) {
-  $preset_name = $variables['preset_name'];
-  $preset = styles_containers_available_styles('file', 'media_flickr', $preset_name);
-  if (!empty($preset)) {
-    // Build the URL for display.
-    $uri = $variables['uri'];
-    $wrapper = file_stream_wrapper_get_instance_by_uri($uri);
-    $parts = $wrapper->get_parameters();
-    $url = 'http://flickr.com/photos/' . check_plain($parts['u']) . '/' . check_plain($parts['p']);
+    
+	if(isset($variables['preset']) && isset($variables['object'])){
+		//get preset information from the variables object
+		$preset_name = $variables[(string)'preset'];
+		$all_presets = $variables[(string)'presets'];
 
-    $fullscreen_value = $autoplay = 'false';
-    $in_browser = $thumbnail = FALSE;
+		$preset = array(
+			'effects' => $all_presets[(string)'presets'][(string)$preset_name],
+		);
 
-    $width = $height = 0;
+		if (!empty($preset)) {
+			// Build the URL for display.
+			$uri = $variables['uri'];  
+			$wrapper = file_stream_wrapper_get_instance_by_uri($uri);
+			$parts = $wrapper->get_parameters();
+			$url = 'http://flickr.com/photos/' . check_plain($parts['u']) . '/' . check_plain($parts['p']);
 
-    foreach ($preset['effects'] as $effect) {
-      switch ($effect['name']) {
-        case 'resize':
-          $width = isset($effect['data']['width']) ? $effect['data']['width'] : NULL;
-          $height = isset($effect['data']['height']) ? $effect['data']['height'] : NULL;
-          break;
-      }
-    }
-    if (isset($variables['object']->override)) {
-      $override = $variables['object']->override;
-      if (isset($override['width'])) {
-        $width = $override['width'];
-      }
-      if (isset($override['height'])) {
-        $height = $override['height'];
-      }
-      if (isset($override['browser']) && $override['browser']) {
-        $in_browser = TRUE;
-      }
-    }
+			$fullscreen_value = 'false';
+			$in_browser = $thumbnail = FALSE;
 
-    $attributes = array();
-    if ($width) {
-      $attributes['width'] = $width;
-    }
-    if ($height) {
-      $attributes['height'] = $height;
-    }
-    $output = theme('image', array(
-      'path' => media_flickr_image_url($parts['p'], $width, $height),
-      'alt' => $variables['alt'],
-      'title' => $variables['title'],
-      'attributes' => $attributes,
-      'getsize' => FALSE,
-    ));
-    if ($in_browser) {
-      // Add an overlay that says 'Flickr' to media library browser thumbnails.
-      $output .= '<span />';
-    }
-    return $output;
-  }
+			$width = $height = 0;
+
+			foreach ($preset['effects'] as $effect) {
+				switch ($effect['name']) {
+					case 'resize':
+						$width = isset($effect['settings']['width']) ? $effect['settings']['width'] : NULL;
+						$height = isset($effect['settings']['height']) ? $effect['settings']['height'] : NULL;
+						break;
+				}
+			}
+			if (isset($variables['object']->override)) {
+				$override = $variables['object']->override;
+				if (isset($override['width'])) {
+					$width = $override['width'];
+				}
+				if (isset($override['height'])) {
+					$height = $override['height'];
+				}
+				if (isset($override['browser']) && $override['browser']) {
+					$in_browser = TRUE;
+				}
+			}
+
+			$attributes = array();
+			if ($width) {
+				$attributes['width'] = $width;
+			}
+			if ($height) {
+				$attributes['height'] = $height;
+			}
+			$output = theme('image', array(
+			  'path' => media_flickr_image_url($parts['p'], $width, $height),
+			  'alt' => $variables['alt'],
+			  'title' => $variables['title'],
+			  'attributes' => $attributes,
+			  'getsize' => FALSE,
+			));
+			if ($in_browser) {
+				// Add an overlay that says 'Flickr' to media library browser thumbnails.
+				$output .= '<span class="flickr_overlay" />';
+			}
+			return $output;
+		}
+	}
 }
 
 /**
@@ -207,33 +236,12 @@ function media_flickr_media_internet_providers() {
   $path = drupal_get_path('module', 'media_flickr');
   return array(
     'MediaInternetFlickrHandler' => array(
-      'title' => 'youtube',
+      'title' => 'flickr',
       'image' => $path . '/images/stream-flickr.png'
     ),
   );
 }
 
-class MediaInternetFlickrHandler extends MediaInternetBaseHandler {
-  public function claim($embedCode) {
-    if (media_flickr_media_parse($embedCode)) {
-      return TRUE;
-    }
-  }
-
-  public function save() {
-    $file = $this->getFileObject();
-    file_save($file);
-    return $file;
-  }
-
-  public function getFileObject() {
-    $uri = media_flickr_media_parse($this->embedCode);
-    //@todo: this is terribly broken in some ways because the function is really
-    // made for local files which are 'real'
-    return file_uri_to_object($uri);
-  }
-}
-
 /**
  * @DEPRECATED
  * Implements hook_styles_containers().
diff --git a/media_flickr.utilities.inc b/media_flickr.utilities.inc
old mode 100644
new mode 100755
index 07eb206..97ee820
--- a/media_flickr.utilities.inc
+++ b/media_flickr.utilities.inc
@@ -30,7 +30,7 @@ function _media_flickr_photo_url($photo_code, $width = 0, $height = 0, $cached =
 function _media_flickr_photo_remote_url($photo_code, $size) {
   $getsize = _media_flickr_sets_request('flickr.photos.getSizes', array('photo_id' => $photo_code));
 
-  if ($getsize) {
+  if ($getsize/* && $getsize['@attributes']['stat'] != 'fail'*/) {
     // For small images, there may not be the sizes 0..4 that
     // media_flickr_guess_size assumes, so:
     $size = min($size, count($getsize['sizes']['size'])-1);
@@ -108,26 +108,27 @@ function _media_flickr_guess_size($width = 0, $height = 0) {
 }
 
 function _media_flickr_photo_url_from_size($photo_code, $size = 5) {
-  if ($photo_code) {
-//     // If we're storing our files locally, then grab the filepath now.
-//     if ($store = variable_get('media_flickr_store_local', FALSE)) {
-//       $filepath = db_result(db_query("SELECT f.filepath FROM {files} f INNER JOIN {media_flickr_sizes} m ON m.fid = f.fid AND m.code = '%s' AND m.size = %d", $photo_code, $size));
-//     }
-//     // If we don't have a filepath, it's either because we're not storing
-//     // them locally, or it hasn't been saved locally yet.
-//     if (!$filepath && $store) {
-//       // Let's attempt to store our file locally.
-//       $filepath = media_flickr_store_local($photo_code, $size);
-//     }
-//     // We're not storing locally, or have otherwise failed,
-//     // so now we'll just grab the remote URL.
-//     if (!$filepath) {
-      $filepath = _media_flickr_photo_remote_url($photo_code, $size);
-//     }
-    // URLize that path...
-    $filepath = url($filepath, array('absolute' => TRUE));
-    return $filepath;
-  }
+	//check to make sure we have a valid photo code
+	if (is_numeric($photo_code)) {
+	//     // If we're storing our files locally, then grab the filepath now.
+	//     if ($store = variable_get('media_flickr_store_local', FALSE)) {
+	//       $filepath = db_result(db_query("SELECT f.filepath FROM {files} f INNER JOIN {media_flickr_sizes} m ON m.fid = f.fid AND m.code = '%s' AND m.size = %d", $photo_code, $size));
+	//     }
+	//     // If we don't have a filepath, it's either because we're not storing
+	//     // them locally, or it hasn't been saved locally yet.
+	//     if (!$filepath && $store) {
+	//       // Let's attempt to store our file locally.
+	//       $filepath = media_flickr_store_local($photo_code, $size);
+	//     }
+	//     // We're not storing locally, or have otherwise failed,
+	//     // so now we'll just grab the remote URL.
+	//     if (!$filepath) {
+	    $filepath = _media_flickr_photo_remote_url($photo_code, $size);
+	//     }
+	  // URLize that path...
+		$filepath = url($filepath, array('absolute' => TRUE));   
+		return $filepath;
+	}
 }
 
 // function _media_flickr_store_local($photo_code, $size) {
diff --git a/media_flickr.wysiwyg.css b/media_flickr.wysiwyg.css
old mode 100644
new mode 100755
