Detect if an assembly is a managed assembly

While using a great IOC/DI container (read for those not familiar with it read this post) I wrote some code to auto detect and auto load the necessary dependencies (I really, really, REALLY hate the XML configuration file so …) Besides a lot of other issues with this method worth a blog post on it’s own, the whole thing crashed as soon as an unmanaged assembly was found in the path.

After some googling I found a few ways to solve my problem:

Use .Net Reflection:

Try to do a AssemblyName.GetAssemblyName(path); If it throws an exception it’s not a managed assembly. As you would suspect this is horribly slow.

Read the binary data from the assembly to detect the assembly type.

Actually the .Net managed assemblies are with specific values in the header. To read these we could use the command and then walk through the headers with pointers as explained on this site. Since this loads the assembly in memory it was a no-go for me.

There are alot of unmanaged solutions out there (read here and here) that are candidates to port to c# but Rupreet’s weblog saved the day. And here are the relevant code fragments of my AssemblyInfo class:

   1:  try
   2:  {
   3:      if (dataDictionaryRVA == null)
   4:      {
   5:          GetHeaders();
   6:      }
   7:      return dataDictionaryRVA[14] != 0;
   8:  }
   9:  catch (Exception)
  10:  {
  11:      // when an error occurs return false.
  12:  }
  13:  return false;

Obviously the interesting code is inside the GetHeaders method including the comments from Rupreet:

   1: dataDictionaryRVA = new uint[16];
   2: dataDictionarySize = new uint[16];
   3:  
   4: using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read))
   5: {
   6:     BinaryReader reader = new BinaryReader(fs);
   7:  
   8:     //PE Header starts @ 0x3C (60). Its a 4 byte header.
   9:     fs.Position = PeHeaderStart;
  10:     peHeader = reader.ReadUInt32();
  11:  
  12:     //Moving to PE Header start location...
  13:     fs.Position = peHeader;
  14:     peHeaderSignature = reader.ReadUInt32();
  15:  
  16:     //We can also show all these value, but we will be       
  17:     //limiting to the CLI header test.
  18:     machine = reader.ReadUInt16();
  19:     sections = reader.ReadUInt16();
  20:     timestamp = reader.ReadUInt32();
  21:     pSymbolTable = reader.ReadUInt32();
  22:     noOfSymbol = reader.ReadUInt32();
  23:     optionalHeaderSize = reader.ReadUInt16();
  24:     characteristics = reader.ReadUInt16();
  25:  
  26:     /*
  27:     Now we are at the end of the PE Header and from here, the
  28:     PE Optional Headers starts...
  29:     To go directly to the datadictionary, we'll increase the      
  30:     stream’s current position to with 96 (0x60). 96 because,
  31:     28 for Standard fields
  32:     68 for NT-specific fields
  33:     From here DataDictionary starts...and its of total 128 bytes. DataDictionay has 16 directories in total,
  34:     doing simple maths 128/16 = 8.
  35:     So each directory is of 8 bytes.
  36:     In this 8 bytes, 4 bytes is of RVA and 4 bytes of Size.
  37: 
  38:     btw, the 15th directory consist of CLR header! if its 0, its not a CLR file :)
  39:     */
  40:  
  41:     dataDictionaryStart = Convert.ToUInt16(Convert.ToUInt16(fs.Position) + 0x60);
  42:     fs.Position = dataDictionaryStart;
  43:  
  44:     for (int i = 0; i < 15; i++)
  45:     {
  46:         dataDictionaryRVA[i] = reader.ReadUInt32();
  47:         dataDictionarySize[i] = reader.ReadUInt32();
  48:     }
  49:  
  50:     fs.Close();
  51: }

My complete class implementation is here:

   1: using System;
   2: using System.IO;
   3: using System.Reflection;
   4:  
   5: namespace Williame.Koen.Blog
   6: {
   7:     /// <summary>
   8:     /// Returns information about an assembly without loading it into the appdomain.
   9:     /// </summary>
  10:     public class AssemblyInfo
  11:     {
  12:         /// <summary>
  13:         /// PE Header starts @ 0x3C (60). Its a 4 byte header.
  14:         /// </summary>
  15:         public const long PeHeaderStart = 0x3C;
  16:  
  17:         protected uint peHeader;
  18:         protected uint peHeaderSignature;
  19:         protected ushort machine;
  20:         protected ushort sections;
  21:         protected uint timestamp;
  22:         protected uint pSymbolTable;
  23:         protected uint noOfSymbol;
  24:         protected ushort optionalHeaderSize;
  25:         protected ushort characteristics;
  26:         protected ushort dataDictionaryStart;
  27:         protected uint[] dataDictionaryRVA;
  28:         protected uint[] dataDictionarySize;
  29:         protected string file;
  30:         protected AssemblyName name; 
  31:  
  32:         public AssemblyInfo(string fileName)
  33:         {
  34:             this.file = Path.GetFullPath(fileName);
  35:         }
  36:  
  37:         protected void GetHeaders()
  38:         {
  39:             dataDictionaryRVA = new uint[16];
  40:             dataDictionarySize = new uint[16];
  41:  
  42:             using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read))
  43:             {
  44:                 BinaryReader reader = new BinaryReader(fs);
  45:  
  46:                 //PE Header starts @ 0x3C (60). Its a 4 byte header.
  47:                 fs.Position = PeHeaderStart;
  48:                 peHeader = reader.ReadUInt32();
  49:  
  50:                 //Moving to PE Header start location...
  51:                 fs.Position = peHeader;
  52:                 peHeaderSignature = reader.ReadUInt32();
  53:  
  54:                 //We can also show all these value, but we will be       
  55:                 //limiting to the CLI header test.
  56:                 machine = reader.ReadUInt16();
  57:                 sections = reader.ReadUInt16();
  58:                 timestamp = reader.ReadUInt32();
  59:                 pSymbolTable = reader.ReadUInt32();
  60:                 noOfSymbol = reader.ReadUInt32();
  61:                 optionalHeaderSize = reader.ReadUInt16();
  62:                 characteristics = reader.ReadUInt16();
  63:  
  64:                 /*
  65:                 Now we are at the end of the PE Header and from here, the
  66:                 PE Optional Headers starts...
  67:                 To go directly to the datadictionary, we'll increase the      
  68:                 stream’s current position to with 96 (0x60). 96 because,
  69:                 28 for Standard fields
  70:                 68 for NT-specific fields
  71:                 From here DataDictionary starts...and its of total 128 bytes. DataDictionay has 16 directories in total,
  72:                 doing simple maths 128/16 = 8.
  73:                 So each directory is of 8 bytes.
  74:                 In this 8 bytes, 4 bytes is of RVA and 4 bytes of Size.
  75: 
  76:                 btw, the 15th directory consist of CLR header! if its 0, its not a CLR file :)
  77:                 */
  78:  
  79:                 dataDictionaryStart = Convert.ToUInt16(Convert.ToUInt16(fs.Position) + 0x60);
  80:                 fs.Position = dataDictionaryStart;
  81:  
  82:                 for (int i = 0; i < 15; i++)
  83:                 {
  84:                     dataDictionaryRVA[i] = reader.ReadUInt32();
  85:                     dataDictionarySize[i] = reader.ReadUInt32();
  86:                 }
  87:  
  88:                 fs.Close();
  89:             }
  90:         }
  91:  
  92:         public bool IsManaged
  93:         {
  94:             get
  95:             {
  96:                 try
  97:                 {
  98:                     if (dataDictionaryRVA == null)
  99:                     {
 100:                         GetHeaders();
 101:                     }
 102:                     return dataDictionaryRVA[14] != 0;
 103:                 }
 104:                 catch (Exception)
 105:                 {
 106:                     // when an error occurs return false.
 107:                 }
 108:                 return false;
 109:             }
 110:         }
 111:  
 112:         public AssemblyName Name
 113:         {
 114:             get
 115:             {
 116:                 if (name == null)
 117:                 {
 118:                     name = AssemblyName.GetAssemblyName(file);
 119:                 }
 120:                 return name;
 121:             }
 122:         }
 123:     }
 124: }

As you can see, I also included the AssemblyName which can give me some more information withtout loading the assembly in memory.

Issues:

  • This is example code so be careful with it in production code.
  • In addition, check the "magic" field of the PE header (the first 2 bytes) to ensure it is a 32-bit image file (0x010B). The data directory table for 64-bit PE headers start at offset 112 - as opposed to 96 for 32-bit headers.
  • This example ignores recommendations in Microsoft's PE specification to check the values of size fields so you don't read the wrong data

Tags: , , , , , ,

Comments

payday loans
payday loans United States
11/21/2009 3:05:59 PM Permalink

Hmmm interesting stuff

cash loans
cash loans United States
11/28/2009 9:00:53 PM Permalink

I like what I see. keep it going

anonymous proxy
anonymous proxy Thailand
12/16/2009 9:50:14 PM Permalink

Great insights. I loved to read your article. You must be putting a lot of time into your blog!

proxy
proxy Thailand
12/17/2009 8:03:03 PM Permalink

Great share. Keep up the good work.

Camera lense
Camera lense
12/18/2009 8:44:53 AM Permalink

Excellent post.

Digital camera
Digital camera United States
12/18/2009 9:38:04 AM Permalink

Great post. I like it.

ผลบอล
ผลบอล Thailand
12/21/2009 7:27:48 PM Permalink

This is a very nice post.

unblock myspace
unblock myspace
12/22/2009 9:14:10 AM Permalink

Great blog, this could be the best blog I ever visited thi month. Never stop to write something useful dude!.

fast payday loans
fast payday loans United States
12/27/2009 1:56:18 PM Permalink

thanks!  very helpful post!! like the template btw ;)

Ggler
Ggler United States
12/29/2009 5:49:05 AM Permalink

Nice post. I love it.

Festival Museum Nusantara
Festival Museum Nusantara United States
1/1/2010 11:11:30 PM Permalink

Thanks for posting this info. I just want to let you know that I just check out your site and I find it very interesting and informative. I can’t wait to read lots of your posts.


payday loans
payday loans United States
1/27/2010 10:19:15 AM Permalink

If you realize that all things change, there is nothing you will try to hold on to... there is nothing you cannot achieve.

fast payday loans
fast payday loans United States
1/30/2010 11:00:02 AM Permalink

If someone is going down the wrong road, he doesn't need motivation to speed him up. What he needs is education to turn him around.

cash loans
cash loans United States
2/4/2010 7:19:41 PM Permalink

All men's gains are the fruit of venturing.

lifestyle
lifestyle United States
2/13/2010 11:37:39 AM Permalink

One may walk over the highest mountain one step at a time.

payday loans
payday loans United States
2/14/2010 2:03:13 PM Permalink

Make no small plans for they have no power to stir the soul.

Nicolas Daul
Nicolas Daul United States
2/17/2010 5:58:20 PM Permalink

This is a excellent post, but I was wondering how do I suscribe to the RSS feed?

Arianne Grum
Arianne Grum United States
2/19/2010 1:20:04 AM Permalink

This is a very fascinating post, I was looking for this info. Just so you know I located your webpage when I was browsing for blogs like mine, so please check out my site sometime and leave me a comment to let me know what you think.

Ella Voltz
Ella Voltz United States
2/19/2010 2:04:37 PM Permalink

This is a good write-up, I was wondering if I could use this write-up on my website, I will link it back to your website though. If this is a problem please let me know and I will take it down right away.

Berry Vasko
Berry Vasko United States
2/20/2010 5:14:21 AM Permalink

I have read a few of the articles on your website now, and I really like your style of blogging. I added it to my favorites blog list and will be checking back soon. Please check out my site as well and let me know what you think.

Rudy Mccloude
Rudy Mccloude United States
2/20/2010 2:50:56 PM Permalink

This is a very important post, I was looking for this info. Just so you know I located your blog site when I was checking for blogs like mine, so please check out my site sometime and leave me a comment to let me know what you think.

Soon Kingham
Soon Kingham United States
2/20/2010 11:34:33 PM Permalink

I have read a few of the articles on your website now, and I really like your style of blogging. I added it to my favorites website list and will be checking back soon. Please check out my site as well and let me know what you think.

Noah Rosenstock
Noah Rosenstock United States
2/22/2010 2:02:26 AM Permalink

This is a good article, I was wondering if I could use this posting on my website, I will link it back to your website though. If this is a problem please let me know and I will take it down right away.

Luba Yetto
Luba Yetto United States
2/22/2010 3:01:49 PM Permalink

Im pleased I located this site, I couldnt discover any information on this subject matter before. I also operate a website and if you wish to ever serious in a little bit of guest writing for me make sure you feel free to let me know, im always look for people to check out my web site. Please stop by and leave a comment sometime!

Lori Malpica
Lori Malpica United States
2/25/2010 4:43:41 AM Permalink

This is a very fascinating post, I was looking for this information. Just so you know I discovered your weblog when I was browsing for blogs like mine, so please check out my site sometime and leave me a comment to let me know what you think.

Bettye Meloan
Bettye Meloan United States
2/25/2010 3:08:29 PM Permalink

Im glad I discovered this weblog, I couldnt get any information on this subject before. Also operate a website and if you're ever serious in doing some visitor writing for me make sure you feel free to let me know, im always look for people to check out my web site. Please stop by and leave a comment sometime!

Kiesha Healey
Kiesha Healey United States
2/26/2010 1:21:10 AM Permalink

This is a good piece of writing, I discovered your web page looking around google for a similar subject and came to this. I couldnt find to much different information on this blog, so it was good to discover this one. I will certainly end up being back again to look at some other articles that you have another time.

Lucien Measeck
Lucien Measeck United States
2/26/2010 11:29:14 AM Permalink

I don't agree with everything in this summary, but you do make some very good points. Im very interested in this topic and I myself do alot of research as well. Either way it was a well thoughtout and nice read so I figured I would leave you a comment. Feel free to check out my website sometime and let me know what you think.

Linan
Linan United States
3/14/2010 2:05:50 PM Permalink

Substantially, the article is really the greatest on this deserving topic. I fit in with your conclusions and will thirstily look forward to your upcoming updates. Just saying thanks will not just be sufficient, for the wonderful lucidity in your writing. I will directly grab your rss feed to stay abreast of any updates. Good work and much success in your business dealings!

stock charts
stock charts United States
3/17/2010 5:42:24 AM Permalink

I wasn't sure where to post this but I would like to add your site in one of my directories. Please contact me at your convience because I will only list sites with the webmasters consent - thank you.

Ginny Biggers
Ginny Biggers United States
3/22/2010 8:36:39 AM Permalink

Amazing post, this is very similar to a site that I have. Please check it out sometime and feel free to leave me a comenet on it and tell me what you think. I'm always looking for feedback.

payday loans
payday loans United States
3/23/2010 10:56:49 AM Permalink

Vision without action is merely a dream. Action without vision just passes the time. Vision with action can change the world.

Shad Bitz
Shad Bitz United States
3/24/2010 5:42:11 PM Permalink

I'm happy I discovered this web page, I couldnt get any information on this topic prior to. Also manage a niche site and if you want to ever serious in a little bit of guest writing for me if possible feel free to let me know, im always look for people to check out my web page. Please stop by and leave a comment sometime!

Pretty good post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I'll be subscribing to your feed and I hope you post again soon.

cash advance loans
cash advance loans United States
3/26/2010 6:02:13 AM Permalink

I'm curious what CMS your site uses? It looks really good and I like all the visitor functions that are available. Sorry if this is the wrong place to ask this but I wasn't sure how to contact you - thanks.

Renae Asch
Renae Asch United States
3/27/2010 5:58:34 PM Permalink

This is a very important post, I was looking for this information. Just so you know I discovered your webpage when I was checking for blogs like mine, so please check out my site sometime and leave me a comment to let me know what you think.

Rory Pohl
Rory Pohl United States
3/31/2010 2:11:20 PM Permalink

This is a exceptional piece of content, I found your weblog checking aol for a similar subject and came to this. I couldnt come across to much alternative details on this post, so it was pleasant to locate this one. I definitely will end up being returning to check out some other articles that you have another time.

wow leveling guide
wow leveling guide United States
4/4/2010 10:15:22 PM Permalink

Pretty good post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I'll be subscribing to your feed and I hope you post again soon.

horde leveling guide
horde leveling guide United States
4/6/2010 8:55:38 PM Permalink

Admiring the time and effort you put into your blog and detailed information you offer! I will bookmark your blog and have my children check up here often. Thumbs up!

horde leveling guide
horde leveling guide United States
4/7/2010 5:14:18 AM Permalink

Admiring the time and effort you put into your blog and detailed information you offer! I will bookmark your blog and have my children check up here often. Thumbs up!

play sports games
play sports games United States
4/7/2010 7:10:50 AM Permalink

I picked up your web site from facebook and it is actually pretty cool. Thank you very much for giving this kind of an awesome post!!!

While this subject can be very touchy for most people, my opinion is that there has to be a middle or common ground that we all can find. I do appreciate that youve added relevant and intelligent commentary here though. Thank you!

While this subject can be very touchy for most people, my opinion is that there has to be a middle or common ground that we all can find. I do appreciate that youve added relevant and intelligent commentary here though. Thank you!

press release distribution
press release distribution United States
4/18/2010 8:41:29 AM Permalink

What youre saying is completely true.  I know that everybody must say the same thing, but I just think that you put it in a way that everyone can understand.  I also love the images you put in here.  They fit so well with what youre trying to say.  Im sure youll reach so many people with what youve got to say.

Clasificados Gratis
Clasificados Gratis United States
4/20/2010 3:40:13 PM Permalink

Clasificados Online. Anuncios Clasificados Gratis en España.

Skye Renburg
Skye Renburg United States
4/20/2010 6:38:47 PM Permalink

This is a good post, but I was wondering how do I suscribe to the RSS feed?

Suanne Bubert
Suanne Bubert United States
4/21/2010 4:42:04 AM Permalink

I don't agree with everything in this piece of writing, but you do make some very good points. I'm very interested in this subject and I myself do alot of research as well. Either way it was a well thoughtout and nice read so I figured I would leave you a comment. Feel free to check out my website sometime and let me know what you think.

Bani pe internet
Bani pe internet United States
4/21/2010 4:34:25 PM Permalink

reclama pe net - advertise on the internet

Sondage Remunere
Sondage Remunere United States
4/22/2010 1:19:56 AM Permalink

Yes, thats exactly what I wanted to hear!  Great stuff here.  The information and the detail were just perfect.  I think that your perspective is deep, its just well thought out and really fantastic to see someone who knows how to put these thoughts down so well.  Great job on this.

Jerold Nusser
Jerold Nusser United States
4/22/2010 8:13:14 AM Permalink

I'm happy I discovered this site, I couldnt get any information on this subject prior to. Also run a website and if you're ever serious in doing some visitor writing for me make sure you feel free to let me know, i'm always look for people to check out my blog. Please stop by and leave a comment sometime!

shag rug
shag rug United States
4/22/2010 8:49:55 AM Permalink

I dont know what to say.  This blog is fantastic.  Thats not really a really huge statement, but its all I could come up with after reading this.  You know so much about this subject.  So much so that you made me want to learn more about it.  Your blog is my stepping stone, my friend.  Thanks for the heads up on this subject.

Edmundo Curiel
Edmundo Curiel United States
4/23/2010 8:34:10 PM Permalink

This is a wonderful write-up, I found your blog site searching google for a similar topic and arrived to this. I couldnt discover to much other information on this write-up, so it was good to discover this one. I probably will end up being returning to check out some other posts that you have another time.

dog treat recipes
dog treat recipes United States
4/25/2010 5:35:26 AM Permalink

This design is wicked!  You certainly know how to keep a reader entertained.  Between your wit and your videos, I was almost moved to start my own blog (well, almost...HaHa!)  Great job.  I really enjoyed what you had to say, and more than that, how you presented it.  Too cool!

regcure
regcure United States
4/25/2010 6:37:53 PM Permalink

Youre so cool!  I dont think Ive read anything like this before.  So good to find somebody with some original thoughts on this subject.  Thanks for starting this up.  This blog is something that is needed on the web, someone with a little originality.  Good job for bringing something new to the internet!

Mauro Fitzmaurice
Mauro Fitzmaurice United States
4/27/2010 2:57:04 AM Permalink

Outstanding piece of writing, this is very similar to a site that I have. Please check it out sometime and feel free to leave me a comenet on it and tell me what you think. I'm always looking for feedback.

Historians
Historians United States
4/28/2010 12:16:58 AM Permalink

I was wondering if you ever considered changing the layout of your blog?  Its very well written; I love what youve got to say.  But maybe you could a little more in the way of content so people could connect with it better.  Youve got an awful lot of text for only having one or two images.  Maybe you could space it out better?

Rapidshare
Rapidshare United States
4/28/2010 3:19:45 AM Permalink

I\'m happy I found this blog, I couldnt discover any info on this subject matter prior to. I also run a site and if you want to ever serious in a little bit of guest writing for me if possible feel free to let me know, i\'m always look for people to check out my site. Please stop by and leave a comment sometime!

Rapidshare
Rapidshare United States
4/28/2010 3:19:49 AM Permalink

I\'m happy I found this blog, I couldnt discover any info on this subject matter prior to. I also run a site and if you want to ever serious in a little bit of guest writing for me if possible feel free to let me know, i\'m always look for people to check out my site. Please stop by and leave a comment sometime!

Melani Diblasio
Melani Diblasio United States
4/30/2010 3:26:39 AM Permalink

Hello webmaster can I use some of the information from this post if I provide a link back to your site?

4rx com review
4rx com review United States
4/30/2010 9:34:13 AM Permalink

Just a question.  Do you think you could add a little more in the way of content here?  I think youve got some interesting points, but Im just not sold.  If you really want to get the crowd behind you, youve got to entertain us, man.  Maybe you could add a video or two to drag the message home.

dog training information
dog training information United States
5/2/2010 2:08:37 PM Permalink

Great job here.  I really enjoyed what you had to say.  Keep going because you definitely bring a new voice to this subject.  Not many people would say what youve said and still make it interesting.  Well, at least Im interested.  Cant wait to see more of this from you.

christening gift ideas
christening gift ideas United States
5/2/2010 11:47:08 PM Permalink

Your thoughts are amazing. Your blog, not so much.  I dont want to disrespect you, just hear me out.  Add a little something here.  What youre saying is so important itd be a shame if people missed it because they were bored to death.  May be a video or a link to something as powerful as the subject.  Just a suggestion.

static cling
static cling United States
5/4/2010 12:12:52 AM Permalink

Have you ever thought about adding a little bit more than just your thoughts?  I mean, what you say is important and everything.  But its got no punch, no pop!  Maybe if you added a pic or two, a video?  You could have such a more powerful blog if you let people SEE what youre talking about instead of just reading it.

chair slipcovers
chair slipcovers United States
5/4/2010 5:15:20 AM Permalink

Yes, thats exactly what I wanted to hear!  Great stuff here.  The information and the detail were just perfect.  I think that your perspective is deep, its just well thought out and really fantastic to see someone who knows how to put these thoughts down so well.  Great job on this.

patio cover
patio cover United States
5/4/2010 3:51:49 PM Permalink

I think youve made some truly interesting points.  Not too many people would actually think about this the way you just did.  Im really impressed that theres so much about this subject thats been uncovered and you did it so well, with so much class.  Good one you, man!  Really great stuff here.

Online Forex Brokers
Online Forex Brokers United States
5/6/2010 5:13:39 AM Permalink

We all know that the more experienced the broker is, the higher chances of success you will see with your leveraged money. An experienced broker is one who has dealt with a large number of individuals and can foresee opportunities that other people miss.

online games
online games United States
5/8/2010 4:34:39 PM Permalink

hello webmaster, your web page's concept is fantastic and loving it. Your posts are fabulous. Make sure you keep up the good work. Greets!.

Make money online
Make money online United States
5/8/2010 9:44:45 PM Permalink

I have been surfing online more than three hours today, yet I never found any interesting article like yours. It's pretty worth enough for me. In my opinion, if all webmasters and bloggers made good content as you did, the internet will be much more useful than ever before.

payday loans
payday loans United States
5/9/2010 2:23:57 AM Permalink

good good…this post deserves nothing Frown  …hahaha just joking Tong …nice post Tong

Chieko Ceconi
Chieko Ceconi United States
5/9/2010 10:55:09 PM Permalink

Good summary, this is very similar to a site that I have. Please check it out sometime and feel free to leave me a comenet on it and tell me what you think. Im always looking for feedback.

Singapore virtual office
Singapore virtual office United States
5/10/2010 6:29:22 AM Permalink

All I can say is keep it up.  This blog is so necessary in a time when everyone just wants to talk about how many people someones cheated on their wife with.  I mean, thanks for bringing intelligence back to the web, its been sorely missed.  Great stuff.  Please keep it coming!

Rodrigo Lenza
Rodrigo Lenza Belize
5/10/2010 6:24:37 PM Permalink

Whats happening, I found this site about structuremap by error when I was going through Aol next I arrived to your web site. I have to say your website is interesting I really like your theme! Currently I don�t have the free time at the present moment to fully look through your sitebut I have bookmarked it. I will be back in a day or 2 . Thanks for a good site.

home insurance quotes
home insurance quotes United States
5/12/2010 3:57:16 AM Permalink

I personally have embraced the new technologies and the CMS platforms, I think the new tools only make the web designs better. I am glad that new technologies are coming out in web design that make things easier, improved, and better looking for design.

Becky Mcglasson
Becky Mcglasson United States
5/12/2010 10:19:42 PM Permalink

This is a amazing piece of writing, I located your web page checking google for a related theme and came to this. I couldnt discover to much alternative info on this post, so it was great to discover this one. I likely will end up being back again to check out some other articles that you have another time.

cheap edhardy
cheap edhardy United States
5/13/2010 10:43:17 AM Permalink


Thank you for sharing with us,I too always learn something new from your post!

replica watch
replica watch United States
5/13/2010 10:44:42 AM Permalink

Your thoughts was very well laid out and very informative,Thank you for sharing with us.

replica watch
replica watch United States
5/13/2010 10:48:41 AM Permalink

I located your web page checking google for a related theme and came to this.

penis extenders
penis extenders United States
5/14/2010 3:13:59 AM Permalink

I hope you never stop!  This is one of the best blogs Ive ever read.  Youve got some mad skill here, man.  I just hope that you dont lose your style because youre definitely one of the coolest bloggers out there.  Please keep it up because the internet needs someone like you spreading the word.

Hypercom T7Plus
Hypercom T7Plus United States
5/14/2010 7:59:13 AM Permalink

Do you have any other sites other than Copy, Play, Improve | Detect if an assembly is a managed assembly?  Because with the world getting better, we'll see.  Because getting prepared and ready with the right stuff and a list is going to make it better, ya know?

desks home
desks home United States
5/14/2010 10:19:16 PM Permalink

I have always been wowedat the way an ordinary observer lends so much more credence and attaches so much more importance to waking events than to those storiesin dreams... Man... is above all the plaything of his memory.

mobile kitchen Los Angeles
mobile kitchen Los Angeles United States
5/16/2010 5:58:30 PM Permalink

If I could say one thing about this blog it would be design!  I mean, I was so distracted by the clashing colours that it was pointless to try to read the blog.  What are trying to do here exactly?  No one can read this is if it looks like a kid smashed a box of Crayola on your page!  Please do something about this.

cash advance loans
cash advance loans United States
5/17/2010 1:08:42 AM Permalink

I was very pleased to find this site.I wanted to thank you for this great read!! I definitely enjoying every little bit of it and I have you bookmarked to check out new stuff you post.

Replica handbags
Replica handbags United States
5/17/2010 3:23:57 AM Permalink

Thanks for a great time visiting your site. It's really a pleasure knowing a site like this packed with great information.

sony ericsson w995
sony ericsson w995 United States
5/20/2010 4:20:39 AM Permalink

I would like to say this is an excellent blog that I have ever come across. Very

informative. Please write more so that we can get more details.

China nike shoes
China nike shoes United States
5/20/2010 4:21:27 AM Permalink

I love seeing websites that understand the value of providing a quality resource for free.

It?s the old what goes around comes around routine.

belkin laptop bags
belkin laptop bags United States
5/20/2010 4:41:55 AM Permalink

Don’t stop blogging! It’s nice to read a sane commentary for once

bad credit cash loans
bad credit cash loans United States
5/20/2010 4:47:05 AM Permalink

Hello. Great job. I did not expect this on a Wednesday. This is a great story. Thanks!

cctv camera
cctv camera Canada
5/20/2010 5:27:31 AM Permalink

What a great post. I have to say I really enjoyed reading it. Thanks!

cctv camera
cctv camera Canada
5/20/2010 5:27:53 AM Permalink

I just want to say I like it and thanks.
wow...this is something i have never ever read.very detailed analysis.

led light
led light People's Republic of China
5/21/2010 4:12:56 AM Permalink

This was a useful post and I think it is rather easy to see from the other comments as well that this post is well written and useful.

torchiere floor lamps
torchiere floor lamps United States
5/21/2010 10:45:42 PM Permalink

I recently came accross your blog and have been reading along. I thought I would leave my first comment. I dont know what to say except that I have enjoyed reading. Nice blog. I will keep visiting this blog very often.

While this subject can be very touchy for most people, my opinion is that there has to be a middle or common ground that we all can find. I do appreciate that youve added relevant and intelligent commentary here though. Thank you!

Gary Gregory
Gary Gregory United States
5/27/2010 4:43:24 AM Permalink

Fantastic blog!  I dont think Ive seen all the angles of this subject the way youve pointed them out.  Youre a true star, a rock star man.  Youve got so much to say and know so much about the subject that I think you should just teach a class about it...HaHa!

Quick Loans
Quick Loans United States
5/28/2010 6:35:04 PM Permalink

Im not going to say what everyone else has already said, but I do want to comment on your knowledge of the topic.  Youre truly well-informed.  I cant believe how much of this I just wasnt aware of.  Thank you for bringing more information to this topic for me.  Im truly grateful and really impressed.

buy supplements
buy supplements United States
5/29/2010 11:44:47 PM Permalink

Can I just say what a relief to find someone who actually knows what theyre talking about on the internet.  You definitely know how to bring an issue to light and make it important.  More people need to read this and understand this side of the story.  I cant believe youre not more popular because you definitely have the gift.

replica watch
replica watch People's Republic of China
5/31/2010 10:33:34 AM Permalink

Thanks for such a great post and the review, I am totally impressed! Keep stuff like this coming.

designer laptop bag
designer laptop bag United States
5/31/2010 11:04:40 AM Permalink

I would like to thank you for the efforts you have made in writing this post. I am hoping the same best work from you in the future as well. In fact your creative writing abilities has inspired me to start my own BlogEngine blog now. Really the blogging is spreading its wings rapidly. Your write up is a fine example of it.

business marketng leads
business marketng leads United States
5/31/2010 10:27:02 PM Permalink

Your page is so fantastic!  You sure do know how to keep your audience entertained.  Im so glad that I took the time to look at this blog, because let me tell you.  Not a lot of people know how to balance knowledge of a subject and content.  The videos are perfect!

In three words I can sum up everything I've learned about life: It goes on.

glass door refrigerators
glass door refrigerators United States
6/4/2010 7:44:27 AM Permalink

Im not going to say what everyone else has already said, but I do want to comment on your knowledge of the topic.  Youre truly well-informed.  I cant believe how much of this I just wasnt aware of.  Thank you for bringing more information to this topic for me.  Im truly grateful and really impressed.

lipo 6
lipo 6 United States
6/4/2010 11:32:37 AM Permalink

Gratitude in support of captivating made the effort headed for job this.

Agueda Hohmeier
Agueda Hohmeier United States
6/4/2010 5:13:01 PM Permalink

This is a really good post, but I was wondering how do I suscribe to the RSS feed?

Lidia
Lidia United States
6/5/2010 3:52:10 AM Permalink

You try the Lynx alpha yet? I'm wondering if I should get it, want to hear any thoughts

dropship housewares
dropship housewares United States
6/5/2010 9:25:55 AM Permalink

Just a question.  Do you think you could add a little more in the way of content here?  I think youve got some interesting points, but Im just not sold.  If you really want to get the crowd behind you, youve got to entertain us, man.  Maybe you could add a video or two to drag the message home.

lose belly fat
lose belly fat
6/7/2010 10:12:19 AM Permalink

i understand what you mean cuz i run a private Diablo II realm and kids just spam massivly dont read topics talk smack ect… thats why i dont post much on my site or others cuz of crap like this cuz when ever i do post something i get nothing but smack talkin or they flame me but keep up the good work

replica watches
replica watches United States
6/7/2010 10:15:00 AM Permalink

Its like you read my mind!  You seem to know so much about this, like you wrote the book in it or something.  I think that you could do with some pics to drive the message home a bit, but other than that, this is great blog.  A great read.  Ill definitely be back.

executive coach
executive coach United States
6/9/2010 12:59:42 AM Permalink

Moving and powerful!  Youve certainly got a way of reaching people that I havent seen very often.  If most people wrote about this subject with the eloquence that you just did, Im sure people would do much more than just read, theyd act.  Great stuff here.  Please keep it up.

I hope you never stop!  This is one of the best blogs Ive ever read.  Youve got some mad skill here, man.  I just hope that you dont lose your style because youre definitely one of the coolest bloggers out there.  Please keep it up because the internet needs someone like you spreading the word.

car insurance
car insurance United States
6/10/2010 10:20:57 AM Permalink

All I want to say is, yes!  Yes!  Yes!  Youre so right.  I want to get behind this so much.  You speak with so much authority, so much spirit, I feel as though youve definitely hit the nail on the head.  Good job with this.  Please keep brining us more because we need more of your type of blogger.

Evening Dresses
Evening Dresses People's Republic of China
6/10/2010 10:30:49 AM Permalink

With more 1000 Designer dresses,we supply Evening Dresses,Custom Dresses,formal gowns,cocktail dresses with wholesale price.
[url=http://www.dress4dancing.com" rel="nofollow">http://www.dress4dancing.com" rel="nofollow">http://www.dress4dancing.com" rel="nofollow">http://www.dress4dancing.com ]   Cheap Evening Dresses[/url]
[url=http://www.dress4dancing.com" rel="nofollow">http://www.dress4dancing.com" rel="nofollow">http://www.dress4dancing.com" rel="nofollow">http://www.dress4dancing.com ]  Evening Dresses[/url]
[url=http://www.dress4dancing.com" rel="nofollow">http://www.dress4dancing.com" rel="nofollow">http://www.dress4dancing.com" rel="nofollow">http://www.dress4dancing.com ]  Prom Dress[/url]
Shop for cheap discount prom dresses, evening gowns, evening dresses, formal dresses, bridesmaids dresses, ball gowns, dress for prom 2010.
[url=http://www.dresssale.co.uk" rel="nofollow">www.dresssale.co.uk" rel="nofollow">http://http://www.dresssale.co.uk" rel="nofollow">www.dresssale.co.uk]prom dresses[/url]
Evening Dresses, Formal Dresses, Evening Gowns, Prom Dresses, Cocktail Dress, Party Dresses, Sexy Dresses, and Short Dresses at great low prices
[url=http:/scx ascxa s/http://www.dresssale.co.uk" rel="nofollow">www.dresssale.co.uk]cheap prom dresses[/url]
[url=http://www.drac aesssale.co.uk]cheap  wedding dresses[/url]
Get your Prom Evening dress, Homecoming gown, Formal Bridesmaid gown or Military
Please browse PromPartyDre as ss.com and select your Evening Prom dress.
[url=http://www.dresssale.co.uk" rel="nofollow">www.dresssale.co.uk" rel="nofollow">http://http://www.dresssale.co.uk" rel="nofollow">www.dresssale.co.uk]wedding dresses[/url]

penis enhancement pills
penis enhancement pills United States
6/11/2010 12:58:37 PM Permalink

Write more, thats all I have to say.  Literally, it seems as though you relied on the video to make your point.  You clearly know what youre talking about, why waste your intelligence on just posting videos to your blog when you could be giving us something enlightening to read?

snoring earplugs
snoring earplugs United States
6/12/2010 7:15:30 AM Permalink

Its like you read my mind!  You seem to know so much about this, like you wrote the book in it or something.  I think that you could do with some pics to drive the message home a bit, but other than that, this is great blog.  A great read.  Ill definitely be back.

hockey jersey
hockey jersey Luxembourg
6/12/2010 10:43:08 AM Permalink

Its amazing, looking at the time and effort you put into your blog and detailed information you provide. I'll bookmark your blog and visit it weekly for your new posts

baseball jerseys
baseball jerseys Hong Kong S.A.R.
6/12/2010 10:44:51 AM Permalink

Thanks a lot for enjoying this beauty article with me. I am apreciating it very much! Looking forward to another great article. Good luck to the author! all the best!

accent lighting
accent lighting United States
6/13/2010 11:56:11 AM Permalink

Thank you for such a great blog! I cant wait to start these activities with my kids. I hope you would publish more posts like this, some activities like this to enjoy the whole year round!

home window tinting atlanta
home window tinting atlanta United States
6/13/2010 6:14:12 PM Permalink

Write more, thats all I have to say.  Literally, it seems as though you relied on the video to make your point.  You clearly know what youre talking about, why waste your intelligence on just posting videos to your blog when you could be giving us something enlightening to read?

p90x workout
p90x workout United States
6/14/2010 1:40:53 PM Permalink

Many thanks for this terrific post it was extremely informative and helped me with my own project I'm looking to complete

college girls
college girls United States
6/14/2010 7:11:33 PM Permalink

How is it that just anybody can write a blog and get as popular as this?  Its not like youve said anything incredibly impressive --more like youve painted a pretty picture over an issue that you know nothing about!  I dont want to sound mean, here.  But do you really think that you can get away with adding some pretty pictures and not really say anything?

Svitlana.Net.Ua
Svitlana.Net.Ua United States
6/15/2010 4:37:00 PM Permalink

I would like to thank you for the efforts you have made in writing this post. I am hoping the same best work from you in the future as well. In fact your creative writing abilities has inspired me to start my own BlogEngine blog now.

няня
няня United States
6/17/2010 3:03:20 PM Permalink

I would like to thank you for the efforts you have made in writing this post. I am hoping the same best work from you in the future as well. In fact your creative writing abilities has inspired me to start my own BlogEngine blog now.
http://svitlana.net.ua/staff/category/3/ гувернантка, http://svitlana.net.ua/staff/category/5/ повар, http://svitlana.net.ua/staff/category/6/ садовник, http://svitlana.net.ua/staff/category/10/ репетитор, http://svitlana.net.ua/staff/category/4 домработница, http://svitlana.net.ua/staff/category/8/ семейная пара, http://svitlana.net.ua/pages/2/ работа няней.

Home Remedies for Acne
Home Remedies for Acne United States
6/18/2010 7:05:08 PM Permalink

Im no expert, but I think you just made the best point.  You obviously know a lot about what youre talking about, and I can really get behind that.  Thanks for being so upfront and so honest about the subject matter.  I really feel like I have a better understanding now.

rhinestones wholesale
rhinestones wholesale United States
6/19/2010 6:16:42 PM Permalink

What I dont understand is how youre not even more popular than you are now.  Youre just so intelligent.  You know so much about this subject, made me think about it from so many different angles.  Its like people arent interested unless it has something to do with Lady Gaga!  Your stuffs great.  Keep it up!

Liegerad
Liegerad United States
6/22/2010 9:54:55 AM Permalink

Hrmm that was weird, my comment got eaten. Anyway I wanted to say that it's nice to know that someone else also mentioned this as I had trouble finding the same info elsewhere. This was the first place that told me the answer. Thanks.

DC MICRO MOTOR
DC MICRO MOTOR People's Republic of China
6/22/2010 11:04:16 AM Permalink

I really appreciate what you’re doing here.

true religion
true religion People's Republic of China
6/22/2010 11:04:44 AM Permalink

Thanks for putting the thought in and writing it

backpack laptop bags
backpack laptop bags United States
6/23/2010 9:27:07 AM Permalink

Nice post to hang on..I really loved it the way of the stuff provided in this article..This has given very useful information..

custom essays
custom essays Puerto Rico
6/23/2010 3:09:54 PM Permalink

I'm looking for information about it, because I must write an essay on that subject. Thank you for so nice article, I found here a lot of useful details.

Многие девушки легкого поведения, ходят на курсы, на которых учатся делать специальный эротический массаж, расслабляющий и тонизирующий. Это своего рода тоже искусство, и незнающий человек никогда не сделает его качественно и профессионально. А это является частью прелюдии, которая помогает расслабиться и настроится на секс. Поэтому, многие путаны уделяют этому вопросу очень много внимания, и стараются делать его качественно.

Проститутки Сочи самые страстные и горячие. По статистике, проститутки Сочи, самые страстные и горячие, и статистику подтверждает большинство мнений мужчин, которые там живут.

multiple streams of income
multiple streams of income United States
6/25/2010 4:14:17 AM Permalink

Your page is so fantastic!  You sure do know how to keep your audience entertained.  Im so glad that I took the time to look at this blog, because let me tell you.  Not a lot of people know how to balance knowledge of a subject and content.  The videos are perfect!

e-pokeronline.ru
e-pokeronline.ru United States
6/27/2010 3:16:07 AM Permalink

Pretty good post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts.Any way Ill be subscribing to your feed and I hope you post again soon

term papers writing
term papers writing Puerto Rico
6/29/2010 5:09:42 PM Permalink

It's the best article on that subject I ever met in the web. I've read some posts here and this one I like most of all. Good job. Thanks.

household toys
household toys United States
6/30/2010 1:49:06 AM Permalink

I dont know what to say.  This is definitely one of the better blogs Ive read.  Youre so insightful, have so much real stuff to bring to the table.  I hope that more people read this and get what I got from it:  chills.  Great job and great blog.  I cant wait to read more, keep em comin!

criminal background checks
criminal background checks United States
6/30/2010 5:18:17 AM Permalink

I wonder how you got so good.  HaHa!  This is really a fascinating blog, lots of stuff that I can get into.  One thing I just want to say is that your design is so perfect!  You certainly know how to get a girls attention!  Im glad that youre here.  I feel like Ive learned something new by being here.

cell phone plans
cell phone plans United States
7/1/2010 8:39:02 PM Permalink

Love, love, LOVE this blog!  You say everything that Im thinking and more.  Youve definitely shed light on a subject that not many people can argue with.  Youre so good at getting what you want to say out there in a way thats intelligent and entertaining.  Im really impressed, man.  REALLY impressed.

Fat Loss Tips
Fat Loss Tips United States
7/3/2010 5:25:12 PM Permalink

I absolutly can not stand it when people leave bad comments on any site, including my own. People only leave bad comments just to be able to win something in a giveaway.

hyper hydrosis
hyper hydrosis United States
7/3/2010 9:09:47 PM Permalink

This is definitely a topic thats close to me so Im happy that you wrote about it.  Im also happy that you did the subject some justice.  Not only do you know a great deal about it, you know how to present in a way that people will want to read more.  Im so happy to know someone like you exists on the web.

It\\\'s an intriguing approach. I ordinarily stumble upon ordinary thoughts on the theme but yours it\\\'s written in a pretty special way. Sure enough, I will revisit your website for additional information.

Willena Belsito
Willena Belsito Austria
7/5/2010 7:34:22 AM Permalink

I encounterd difficulties studying your blog with safari browser, you'd better update your weblog

handmade soap
handmade soap United States
7/5/2010 11:29:34 PM Permalink

How is it that just anybody can write a blog and get as popular as this?  Its not like youve said anything incredibly impressive --more like youve painted a pretty picture over an issue that you know nothing about!  I dont want to sound mean, here.  But do you really think that you can get away with adding some pretty pictures and not really say anything?

Boris Jerez
Boris Jerez Denmark
7/6/2010 8:11:00 AM Permalink

I don't agree with the whole thing in this post, but you do make some very good points. I'm very excited about this subject and I personally act alot of study as well. Either way it was a well thoughtout & nice read so I figured I would leave u a remark. Feel free to take a look at my site sometime and let me know what you feel.

I really loved reading your thoughts, obviously you know what are you talking about! Your site is so easy to use too, I’ve bookmark it in my folder :-D

I dont know what to say.  This blog is fantastic.  Thats not really a really huge statement, but its all I could come up with after reading this.  You know so much about this subject.  So much so that you made me want to learn more about it.  Your blog is my stepping stone, my friend.  Thanks for the heads up on this subject.

I like your blog so much that I feel I have to wish you. Happy New Year in advance. Have a nice and prosperous year ahead

tuition in petaling jaya
tuition in petaling jaya United States
7/8/2010 6:31:57 PM Permalink

Im not gonna lie, youve lost me here.  I know that you meant well and you obviously know what youre talking about, but I cant say that I get where youre coming from.  If you want people to understand your points, you should think about the other side of the argument, too.  Youve got a wealth of knowledge, Ill give you that.  But, quite frankly, you turned me off with your tone.

debt collection agencies
debt collection agencies United States
7/10/2010 3:21:14 AM Permalink

What did you do, just say whatever it is you wanted to make people mad?!  You cant just say something like that and not give any backup for it!  Youve got to at least give me a reason to think that you know what youre talking about, otherwise, you just sound like some kid with a grudge!

payday loans
payday loans United States
7/10/2010 6:20:31 PM Permalink

Every business is built on friendship.

Проститутки
Проститутки United States
7/10/2010 9:46:33 PM Permalink

You gave nice ideas here. I done a research on the issue and learnt most peoples will agree with your blog. Certainly, these practices are unfair; but they say that most of their rules are only to apply to people who overdraw.

Umzug
Umzug United States
7/11/2010 2:19:17 AM Permalink

This is one of the most incredible blogs Ive read in a very long time.  The amount of information in here is stunning, like you practically wrote the book on the subject.  Your blog is great for anyone who wants to understand this subject more.  Great stuff; please keep it up!

Проститутки
Проститутки United States
7/11/2010 9:45:28 AM Permalink

You gave nice ideas here. I done a research on the issue and learnt most peoples will agree with your blog. Certainly, these practices are unfair; but they say that most of their rules are only to apply to people who overdraw.

It\\\'s an intriguing approach. I commonly see minimalist judgments on the matter but yours it\'s written in a pretty special way. For sure, I will revisit your site for more info.

online payday loans
online payday loans United States
7/13/2010 12:09:14 PM Permalink

You can only expand your capacities by working to the very limit http://www.clicknpayday.com

amazon coupons
amazon coupons United States
7/13/2010 10:40:53 PM Permalink

amazon coupon codes

Can I make a suggestion?  I think youve got something good here.  But what if you added a couple links to a page that backs up what youre saying?  Or maybe you could give us something to look at, something that would connect what youre saying to something tangible?  Just a suggestion.

Kyung Katsaounis
Kyung Katsaounis United Kingdom
7/14/2010 11:10:23 PM Permalink

Hi admin I enjoy with ur article . May i use this article for my university test ? thanks admin of http://gadgetax.com

lenen zonder bkr toetsing
lenen zonder bkr toetsing United States
7/15/2010 4:14:47 AM Permalink

Lenen zonder BKR toetsing gaat vandaag heel gemakkelijk. Binnen een paar uur geld lenen zonder BKR toetsing doet u hier, lees snel verder

unique fundraising
unique fundraising United States
7/15/2010 11:33:44 PM Permalink

For what its worth, the layout is definitely amazing.  You know how to balance writing and images/videos.  However, I cant get over how little you actually bring to light here.  I think that everyones said the same thing that youve said over and over again.  Dont you think its time for something more?

gel makeup remover
gel makeup remover United States
7/16/2010 8:01:10 PM Permalink

Instant messaging delighted We identified that website page, My partner and i couldnt select virtually any information on this matter before. Also deal with an internet site plus if you need to at any time considering doing a bit of invitee writing to me you must do make me aware, instant messaging look for folks to check out our site. I highly recommend you stop by and leave any review a few minutes!

Houses to Buy
Houses to Buy United States
7/17/2010 7:00:12 PM Permalink

Just a question.  Do you think you could add a little more in the way of content here?  I think youve got some interesting points, but Im just not sold.  If you really want to get the crowd behind you, youve got to entertain us, man.  Maybe you could add a video or two to drag the message home.

Kobe Bryant Shoes
Kobe Bryant Shoes People's Republic of China
7/19/2010 10:16:01 AM Permalink

I know a new method to  decorate the house from the post.Not only simple,but also generous. Dior high-heeled shoes</a>Don't let a person feel extravagant. I recommend several websites to you that contents are very rich  you can go and see . <a href="www.usa-basketball-shoes.com/...Soldier.html" >Nike Zoom LeBron James Soldier</a>

Walter
Walter Germany
7/19/2010 2:35:17 PM Permalink

sagabindara salutes you all out there

bijuterii argint
bijuterii argint United States
7/19/2010 4:28:20 PM Permalink

I dont know what to say.  This is definitely one of the better blogs Ive read.  Youre so insightful, have so much real stuff to bring to the table.  I hope that more people read this and get what I got from it:  chills.  Great job and great blog.  I cant wait to read more, keep em comin!

Can I just say, this blog is what got me through the day today.  Every time I read it, I just get more and more excited about whats next.  Very refreshing blog and very refreshing ideas.  Im glad that I came across this when I did.  I love what youve got to say and the way you say it.

subject utilities
subject utilities United States
7/22/2010 7:04:13 PM Permalink

This article gives the light in which we can observe the reality. This is very nice one and gives in depth information. Thanks for this nice article. Good post.....Valuable information for all.

bad credit payday loan
bad credit payday loan United States
7/22/2010 9:39:51 PM Permalink

I expect Woman will be the last thing civilized by Man.

migraine
migraine United States
7/25/2010 2:19:25 AM Permalink

Migraine is te genezen. Praktijk voor Migraine, Hoofdpijn en Hormoonstoornissen.

Add comment




  Country flag

biuquote
  • Comment
  • Preview
Loading