How to: 301 Redirect from one domain to another using mod_rewrite

By Recently I created a new E-commerce website for a client of mine. I developed the new site as a subdomain under their existing domain (ex Google ended up indexing around 4000 links from the subdomain I had created, so upon launching the new site I wanted to 301 redirect the subdomain links to the primary domain of the new site.

Sounds easy right? Of course! I quickly found many sites that recommended this rewrite rule using mod_rewrite:

RewriteRule ^(.*)$1 [R=301,L]

However there is a problem with this method that no article seemed to address. This works great at redirecting from the subdomain ( to the new domain (, BUT if you navigate to you will hit an infinite loop.

So, how do you correct this problem? Easy, you need to create a rewrite condition to only apply the rule to your old domain or the subdomain in this case. Just add the following two lines to your .htaccess file in the root of your website:

RewriteCond %{HTTP_HOST} ^(newsite.)?$
RewriteRule ^(.*)$1 [R=301,L]

Now this rewrite rule will ONLY apply to anyone who hits the old subdomain at and 301 redirect them to with the entire URL structure in tact. This method is easy to apply to a stand domain as well, just replace newsite in the above example with www.

I was pretty baffled at the amount of bad information there is on this method so thought I would share the proper method with everyone. Hopefully the update rewrite rules will help anyone having the same issues I had.

How To: Run Apache HTTP Server and IIS on Windows Server 2003

By This is the first article in a series of articles I plan to write on setting up a WAMP stack (Windows, Apache, MySQL, PHP) on Windows Server 2003.

I decided to install Apache HTTP Server on my dedicated Windows Server 2003 machine. I thought I would write a detailed article explaining the process for anyone else wanting to accomplish the same task. With just a few minor config changes you can easily have IIS and Apache running alongside each other on the same Windows server.

Step 1: Download Apache Server Win32 Binary (MSI Installer) from
Step 2: Install Apache with the default settings. Read the Apache Windows Help Documentation for more information.

In order to run IIS and Apache on a single server you need to specify what IP IIS and Apache will listen for port 80 on. You must have two different IP addresses available for use.

Step 3: For Apache: Edit the http.conf file to force Apache to run on a specific IP. Find the below text in your http.conf file. If you left the default install location unchanged the file will be located here:
C:Program FilesApache Software FoundationApache2.2confhttpd.conf

# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the
# directive.
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
Listen 80

Change the line Listen 80 to:
Listen is the private IP address you want Apache to listen on.

Step 4: For IIS: Install the Windows 2003 support tools.
Insert your Windows 2003 CD and open up the file:
This will install additional support tools in “C:Program FilesSupport Tools”

Open up a command prompt (start menu > run > cmd)

At the command prompt, switch to the “C:Program FilesSupport Tools” folder (cd /d c:program filessupport tools)

Type the following command:

httpcfg set iplisten -i is the private IP address you want IIS to listen on. This must be a different IP from the one used above for Apache.

Restart IIS and Apache for the changes to take affect. You might need to reboot depending on your server settings. Now IIS and Apache will run in harmony on the same Windows 2003 Server!

Troubleshooting Apache
If you run it to problems, the first place to start debugging is in your Apache error.log file. The file is located in your root Apache folder logs directory. The default install location is:
C:Program FilesApache Software FoundationApache2.2logserror.log

Common Errors
An attempt was made to access a socket in a way forbidden by its access permissions. : make_sock: could not bind to address

You will receive this error in your error.log if IIS is still listening on the private IP that you set for Apache. If you followed my directions correctly an IIS reset should resolve this problem. If you are still having issues try rebooting your server.

How to: Stop WordPress Comment Spam

By I’ve been receiving a lot of spam comments on my WordPress blog recently. I decided to increase my defenses and stop comment spam once and for all. Using the below three plugins you can virtually eliminate WordPress comment spam from your blog!

All plugins work with WordPress 2.5.1

Akismet – Most blog owners know of Akismet. Akismet is an excellent comment spam filter developed by the creators of WordPress and comes pre-installed on a WordPress blog. Akismet is 100% free for non-commercial use but does require an API key provided by their website.

Simple Trackback Validation Plugin – This plugin checks if the IP address of the trackback sender is equal to the IP address of the webserver the trackback URL is referring to. Basically if the trackback was sent by a spam bot, this plugin will detect it and block it.

Bad Behavior – This plugin is a PHP-based solution for blocking link spam and the robots which deliver it. Bad Behavior works with other link spam solutions by acting as a gatekeeper, preventing spammers from ever delivering their junk, and in many cases, from ever reading your site in the first place.

Using this three-pronged plugin approach will stop 99.9% of your comment spam. Now you can enjoy a spam free blog!

How to: Update FriendFeed using ASP

By Last week the popular feed aggregator FriendFeed launched their new API.

FriendFeed Logo The new API makes it easy for anyone to create custom applications to interact with FriendFeed.

Below is a script I wrote in ASP to post an image and link to your feed stream using XMLHTTP. I’ve included the complete script for download at the bottom of this post.

‘*** set your FriendFeed username and remote key variables
‘*** your users can obtain their remote key here:
ff_username = “username”
ff_remotekey = “remotekey”

‘*** set the URL you want to link to
ff_url = “”

‘*** set the text to add to your post
ff_update = “Visit”

‘*** set the image URL to post to FriendFeed
‘*** this will be posted as a thumbnail on your feed
ff_filename = “”

‘*** package all of your variables in one variable to post to the FriendFeed API
ff_post = “http://” & URLEncode(ff_username) & “:” & URLEncode(ff_remotekey) & “” & URLEncode(ff_update) & “&link=” & URLEncode(ff_url) & “&image0_url=” & URLEncode(ff_filename)

‘*** post the update
Set xml = Server.CreateObject(“Microsoft.XMLHTTP”)
xml.Open “POST”, ff_post, False
xml.setRequestHeader “Content-Type”, “content=text/html; charset=iso-8859-1”
Set xml = Nothing

That’s it! Using the above method you can easily create scripts to update FriendFeed with text, links, and photos!

Download Source File to Update FriendFeed using ASP

How to: Update Pownce using ASP

By On February 28th, 2008 Pownce released version 2.0 of their API. The major update in this new version is the ability to post messages, links, files, events and even replies via the API directly to a account.

Pownce LogoBelow is an ASP script I wrote to update your Pownce profile automatically through the new API. I’ve included the complete script for download at the bottom of this post.

Pownce requires the username and password values be encoded using base64. Below is an ASP function that will convert any value over to base64 encode.

const BASE_64_MAP_INIT = “ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/”
dim nl
‘ zero based arrays
dim Base64EncMap(63)
dim Base64DecMap(127)

‘ must be called before using anything else
PUBLIC SUB initCodecs()
‘ init vars
nl = “

” & chr(13) & chr(10)
‘ setup base 64
dim max, idx
max = len(BASE_64_MAP_INIT)
for idx = 0 to max – 1
‘ one based string
Base64EncMap(idx) = mid(BASE_64_MAP_INIT, idx + 1, 1)
for idx = 0 to max – 1
Base64DecMap(ASC(Base64EncMap(idx))) = idx

‘ encode base 64 encoded string
PUBLIC FUNCTION base64Encode(plain)

if len(plain) = 0 then
base64Encode = “”
exit function
end if

dim ret, ndx, by3, first, second, third
by3 = (len(plain) 3) * 3
ndx = 1
do while ndx <= by3 first = asc(mid(plain, ndx+0, 1)) second = asc(mid(plain, ndx+1, 1)) third = asc(mid(plain, ndx+2, 1)) ret = ret & Base64EncMap( (first 4) AND 63 ) ret = ret & Base64EncMap( ((first * 16) AND 48) + ((second 16) AND 15 ) ) ret = ret & Base64EncMap( ((second * 4) AND 60) + ((third 64) AND 3 ) ) ret = ret & Base64EncMap( third AND 63) ndx = ndx + 3 loop ' check for stragglers if by3 < len(plain) then first = asc(mid(plain, ndx+0, 1)) ret = ret & Base64EncMap( (first 4) AND 63 ) if (len(plain) MOD 3 ) = 2 then second = asc(mid(plain, ndx+1, 1)) ret = ret & Base64EncMap( ((first * 16) AND 48) + ((second 16) AND 15 ) ) ret = ret & Base64EncMap( ((second * 4) AND 60) ) else ret = ret & Base64EncMap( (first * 16) AND 48) ret = ret & "=" end if ret = ret & "=" end if base64Encode = ret END FUNCTION ' initialize call initCodecs

Every site/script that interacts with the Pownce API requires an application key. To get your application key, simply register a new application on Pownce. Just replace {app_key} in the below script with the application key that Pownce provides to you.

In this example we will be posting a LINK to your Pownce profile. Be sure to reference the Pownce 2.0 API documentation for specifications on posting messages, events, files, etc.

‘*** set your Pownce username and password variables
p_username = “username”
p_password = “password”

p_username = p_username & “:” & p_password

‘*** Base64 encode your username and password
p_username = base64Encode(p_username)

‘*** replace {app_key} with YOUR application key
strPownce = “{app_key}”

‘*** the link you want to post to Pownce
pownce_link = “”

‘*** the description you want to post to Pownce
pownce_update = “ Logo – Foo You!”

Set xml = Server.CreateObject(“Microsoft.XMLHTTP”)
xml.Open “POST”, strPownce, False
xml.setRequestHeader “Content-Type”, “application/x-www-form-urlencoded”
xml.setRequestHeader “Authorization”, “BASIC ” & p_username
xml.Send(“note_to=public&url=” & pownce_link & “&note_body=”&pownce_update)

‘*** view the Pownce response
Response.Write xml.responseText

Set xml = Nothing

That’s it! Using the above method you can easily create scripts to update Pownce with anything you would like.

Download Source File to Update Pownce using ASP

How To: Create Your First Wikipedia Article

By Have you ever wanted to create a Wikipedia article, but weren’t entirely sure of the proper steps involved? Or maybe you’ve created an article in the past, but it keeps getting deleted by Wikipedia admins? In this article I am going to explain in detailed steps the correct way to create a Wikipedia article. Logo

1. Create an Account – If you do not already have a account you need to create one. You can edit Wikipedia articles without having an account, but to create a new article you need an account.

2. Search for your Article – Search Wikipedia to verify the article you want to write does not already exist under a different title.

3. Create the Page – Once you have verified your article doesn’t already exist on Wikipedia you will need to create it! On the search results page you will see a bright red bold link that says:

Create the page including your references.

Click this link to get started!

TIP: Wikipedia is case-sensitive which means brad williams is not the same as Brad Williams. Be sure to search for your article in the CASE you want it displayed in.

4. Start Writing! – This is the part of the article writing process where the most confusion comes in, writing your article.

Start your article with this line: {{underconstruction}}

Wikipedia underconstruction tag banner

The underconstruction tag will add a banner (see above) at the top of your article stating the article is under construction. This alerts the admins that your article is a work in progress. This is commonly overlooked, but will keep your article safe from deletion while you work on it.

Next let’s add an Infobox to your article:

Example of Wikipedia Infobox An Infobox is a great way to sum up key information about your article. Not every article needs an Infobox. Wikipedia provides a set of Infobox templates ready to go for major categories. You can view that list here:

Wikipedia Infobox Templates

Select the category that best fits your articles topic. Here is an example of an Infobox I created for a Fraternity article:

{{Infobox Fraternity
|name= Delta Gamma Iota
|crest= [[Image:DeltaGammaIota_Crest.gif]]
|founded= [[1965]]
|birthplace= [[Vincennes, Indiana]]
|free_label = Founding Principles
|free = [[Diligence]] [[Integrity]] [[Brotherhood]]

Each template will have a list of available fields that you can utilize. Feel free to remove any fields you do not want displayed. Also notice these two lines from above:

|free_label = Founding Principles
|free = [[Diligence]] [[Integrity]] [[Brotherhood]]

This is a Free Label, which allows you to create any item you would like on your Infobox. Just fill out the name next to free_label and fill out the values next to free and your all set!

Now it’s time to write the substance of your article. Wikipedia is VERY strict on plagiarism and copyrighted materials. Your article needs to be unique. Wikipedia is also very strict about references. You need to have references for the facts that you are stating.

Adding References
Wikipedia states references are required for “direct quotes and for material that is challenged or likely to be challenged.” Any material that is challenged and for which no source is provided within a reasonable time (or immediately if it’s about a living person) may be removed by any editor.

There are two steps involved for creating references.

1. Place the <ref></ref> tags where you want a footnote reference number to appear in an article
2. Place {{reflist}} at the bottom of your article. This is where your references will be listed.

The following code:

was founded in 1965<ref>{{cite web|url=|title=Delta Gamma Iota Official Site| accessdate=2008-01-21|}}</ref>

Will create this reference:

Wikipedia Reference Example

So lets break this down:
|url= – the link to the web page you are referencing.
|title=Delta Gamma Iota Official Site – this is the title of your reference displayed in your references section
| accessdate=2008-01-21 – this is the date you retrieved the information.
| – this is the original publisher of the information.

References are a required element of your article. 99.9% of articles written with no references will be deleted from Wikipedia.

Now lets discuss some common formatting options for your article.

  • Add italics by placing two apostophes (NOT one double quote) around the word(s) – e.g. ”hello there” will display as: hello world
  • Add bold by placing three apostrophes at each end of the word(s) e.g. ”’hello there”’ will display as: hello world
  • Add bold and italic by placing five apostrophes around the word(s) e.g. ””’hello there””’ will display as: hello world
  • Add an internal link (to another Wikipedia article) by placing the title of the article in double square brackets (make sure it’s spelled correctly) – e.g. [[Hello world]] will link to the article called Hello world
  • Add an external link (to somewhere else on the web,) by placing the entire URL within single square brackets (make sure it’s correct) – e.g. [] (must have “http”) will link to the webpage at
  • To indent a paragraph, put a colon (:) beginning the line (2 colons = double indent)
  • To do bullet points, put a star (*) at the start of each line
  • To do a numbered list, put a hash (#) at the start of each line

At anytime during your writing process you can click the “Show Preview” button to get a look at what you have done so far. This does NOT save your article, but does show a preview of what it will look like. When you are done editing your article click the “Save Page” button to save your article. The first time you save your article it will appear live on, so make sure you have a semi-working page built before the first save.

TIP Add the {{inuse}} tag anywhere in your article to let others know you are currently working on this article. This is typically only used for larger edits and more popular articles. Read more about {{inuse}}

5. Add a Category All Wikipedia articles must be placed in at least one relevant category. The easiest way to find categories for your article is to search for a page on a topic similar to yours, copy the category code and add it to the bottom of your new article.

Sample category code:


The category code is placed at the bottom of your article.

6. Clean-up your new Article – Once you are done with your new Wikipedia article remember to remove any temporary tags you might have added to your article including the {{underconstruction}} tag and the {{inuse}} tag.

Congratulations! You have just created your first Wikipedia article! Remember you can edit any page in Wikipedia. If you get stuck just find an article that has the feature you want and click the “edit this page” button at the top to see how they accomplished adding that feature.

Below is the entire code I used to create the Delta Gamma Iota article on Wikipedia for reference:


{{Infobox Fraternity
|letters= ?GI
|name= Delta Gamma Iota
|crest= [[Image:DeltaGammaIota_Crest.gif]]
|founded= [[1965]]
|birthplace= [[Vincennes, Indiana]]
|type= Social
|colors= Maroon and White
|flowers= Black Rose and Cala Lilly
|free_label = Founding Principles
|free = [[Diligence]] [[Integrity]] [[Brotherhood]]
|address=420 Shelby St.
|city= Vincennes
|state= Indiana
|country= USA

”’Delta Gamma Iota”’ (”’?GI”’) was founded in 1965<ref>{{cite web|url=|title=Delta Gamma Iota Official Site| accessdate=2008-01-21|}}</ref> at [[Vincennes University]] in [[Vincennes, Indiana]]. The Beta Chapter was founded Nov 11th 1995 at [[Indiana University South Bend]]. The Gamma Chapter of Delta Gamma Iota was founded on February 7, 1998 at [[Ball State University]] in [[Muncie, Indiana]].

How To Increase Blog Traffic part 1: Google Webmaster Tools

By I was asked by a couple friends of mine, Brooke and Toni, about how to get more traffic to their blogs. I decided to write a quick tutorial to help everyone learn a couple techniques I use to help rank higher in search engines.

Google Webmaster Tools

Google Webmaster Tools have been around for a while now, but many bloggers do not know how to utilize these tools to increase blog traffic. I use two quick and easy techniques, Sitemaps and Robots.txt, that I will discuss in this article.

Add Your Blog Sitemap

Step 1: Find Your Blog Sitemap

A blog sitemap is an XML feed of every link available on your blog. By default most blogging platforms, including WordPress, Blogger, and Moveable Type, have an RSS feed preinstalled on your blog. An RSS feed is a feed made using XML so there is no setup, it’s already there!

Examples for popular blog platforms:

WordPress –
Blogger –
Moveable Type –
Feed Burner –

Just replace blogname with the name of your site. Use the examples above to figure out what your feed URL is. You will need it in the next step.

Step 2: Load your blog sitemap in to Google Webmaster Tools

Visit the Google Webmaster Tools Home Page and login to your Google account. If you don’t have a Google account, register one real quick.

Once logged in to the Tools dashboard you will see a textbox at the top allowing you to add your blog:

Google Webmaster Tools Dashboard Screenshot

Type your site URL in and click the “Add Site” button.

Next you will need to Verify your blog to Google. Click the “Verify your site” link and follow the instructions given by Google.

Once you have verified your blog click the “Sitemaps” menu item from the left hand side and click the “Add A Sitemap” link.

Select “Add General Web Sitemap” when asked to Choose Type. You will then see a text box to enter in your RSS feed URL like this:

Add Sitemap Tool

Enter your feed URL and click the “Add General Web Sitemap” button and your done! Once Google verifies your feed is in the proper format they will then crawl your feed daily to look for new links.

The benefit of providing Google with a sitemap is to help them improve how they crawl your blog. Over time you will start to notice an increase in search engine ranking which will result in more traffic.

Add Your Robots.txt File

Step 1: Update/create your robots.txt file

A robots.txt file is a small text file placed on your blogs web server that tells search engines what they are allowed, and not allowed, to index on your blog. Most blogs come with a robots.txt file preinstalled. Check to see if your blog has one by visiting the following URL on your blog:

Just replace blogname with the name of your site. We are going to create a new robots.txt file so it doesn’t matter if you do not currently have a robots.txt file on your blog.

Create a text file named robots.txt on your desktop. Enter the following code in to your newly created file:

User-agent: *

User-agent: * – indicates to all search engines they are allowed to crawl your site
Disallow: – incidates what URLs to exclude from being crawled by search engines. Since we are not entering a value to the right we are telling all search engines to crawl everything on your blog
Sitemap: – indicates to the search engines where your sitemap is located. Use the sitemap link from the previous tip.

Save your file and upload to the root directory of your server. Google looks for a robots.txt file on your blog once a day. You can verify that Google finds your file by visiting the following Webmaster Tool section:

Dashboard > Tools > Analyze robots.txt

That’s it! Now all search engines will know where your sitemap is located from your robots.txt file. The major benefit of this is to help search engines find your new posts and links easier.

Google Webmaster Tools offer some really great statistics about how Google crawls and indexes your blog. Make sure you poke around in the other sections.

To install a true Google Sitemap be sure to check out the Google Sitemap Generator Plugin for WordPress.

I hope you find these tips helpful! Stay tuned for part 2.

How To: Download Podcasts with iTunes and Sync with a Zune

By As most of you know I purchased a Zune 80 last week, just in time for my road trip to North Carolina for the holiday. My new Zune was a godsend. Zune LogoThe 10 hour drive flew by as I listened to hour after hour of audiobook and podcast. After returning from my trip I really made the effort to stop using iTunes and use the Zune software as my primary mp3 program. Well after day one I can honestly say that isn’t going to happen.

The Zune software makes it too hard to determine which Podcast shows have new episodes. So I decided to switch back to iTunes for downloading and listening to podcasts/music, but I still wanted to sync to my Zune.

Below are the steps I used to download Podcasts/music from iTunes and sync to my Zune automatically.

Step 1: Unsubscribe from all of your Podcasts on the Zune Software. This will stop your Zune software from downloading new episodes when they are released. iTunes will do this for you from now on.

Step 2: Find your iTunes media folder

1. Open iTunes
2. From the Edit menu select Preferences
3. Click the “Advanced” tab

Your media folder is listed where it states “iTunes Music folder location” Remember this location

Step 3: Change your media folder in Zune Software

1. Open up your Zune Software.
2. Select Settings > General
3. Click the “Change Folder” button and point to the media folder you pulled from iTunes in the previous step.
4. Save your settings

Step 4: Change your Podcast folder in Zune Software

1. Open up your Zune Software.
2. Select Settings > Collection
3. Under the Podcast section add the media folder you pulled from iTunes in Step 2 and select the Podcasts subfolder (ex: c:musicPodcasts) The folder will already exist.

That’s it! The Zune Software will now look in your iTunes media folder for new Podcast episodes and add them to your collection automatically.

Hopefully Microsoft will update the software soon to fix many of the complaints we have about their Podcast section.

How To: Setup Native Tagging Support in WordPress 2.3

By I recently upgraded my blog to WordPress 2.3 and made the decision to switch my tagging system over to WordPress Native Tagging. Prior to my blog update I used Ultimate Tag Warrior for tagging. WordPress 2.3 makes the switch from Ultimate Tag Warrior to Native Tagging extremely easy! Just follow the instructions below:

STEP 1: Import existing Ultimate Tag Warrior tags into WordPress 2.3 database

1. Login to your WordPress Dashboard and navigate to Manage > Import.

2. Select Ultimate Tag Warrior and follow the instructions to import your tags. WordPress does all of the work for you.

Simple as that! Now let’s integrate our WordPress tags in to our existing theme.

There are two different ways to integrate tags into your theme. The first is a Tag Cloud:

STEP 2: Add a Tag Cloud to your existing themeTag Cloud Example

A tag cloud is a simple widget that displays your most popular tags. The more topics under each tag the bigger the font is in your cloud. An example image is shown.

1. Open up the page you would like to include a Tag Cloud on. Typically this is added to your sidebar.php file.

2. Add the below code:

<?php if ( function_exists('wp_tag_cloud') ) : ?>
<h2>Popular Tags</h2>
<?php wp_tag_cloud('smallest=8&largest=22'); ?>
<?php endif; ?>

There are many different ways you can customize your tag cloud. WordPress has compiled a nice list of available actions that you can use. View Tag Cloud Doc

STEP 3: Add related Tags to each blog postRelated Tags Example

Another commonly used method is to list the tags for each post directly below the post.

1. Open up the file you would like to add your tags list to. Typically this is added after each post so you would need to edit single.php and index.php

2. Add the following code:

<p><?php the_tags(); ?></p>

There are many different ways you can customize your related tags. WordPress has compiled a nice list of available actions that you can use. View Related Tags Doc

Tags are a crucial part of any blog. If your not currently using tags take some time this weekend and get them setup. You’ll thank me later!

Upgraded Blog to WordPress 2.3

By After reading Jeff’s WordPress upgrade post I decided to take the plunge and upgrade my blog to WordPress 2.3. As always WordPress has made this process extremely easy. Simply follow their online instructions and you shouldn’t have a problem.

One small annoyance, which was changed a few versions ago, is the removal of the Post Preview Pane located at the bottom of the posts form. WordPress 2.3 does include a Preview >> link, but I hate opening new windows just to preview a post. Here is a quick hack to get the Post Preview Pane back:

Open up your post.php file from your wp-admin directory.
Navigate to approximately line 72 and find the following line of code:

Directly underneath that line, add the following code:

<div id=’preview’ class=’wrap’>
<h2 id=”preview-post”><?php _e(‘Post Preview (updated when post is saved)’); ?></h2>
<iframe src=”<?php echo clean_url(apply_filters(‘preview_post_link’, add_query_arg(‘preview’, ‘true’, get_permalink($post->ID)))); ?>” width=”100%” height=”600″ ></iframe>

Save your changes to post.php and upload. Easy as that!

WordPress 2.3 has added some really slick new features including native tag support, plugin update notifications, and a few new SEO URL updates. It appears all of my plugins ported over without issue, but be sure to check your plugins before upgrading.

I also have the dashboard bug that Jeff posted here. Apparently it has something to do with using Google Blogsearch rather than Technorati. I’ll see if I can find a hack to switch it back to Technorati, because that is a feature I’ve always enjoyed.

I found the hack for incoming links.

If you want to get Technorati results back change:

on lines 11 and 12 in index-extra.php to

I recommend everyone take the plunge and get upgraded!