This post is awesome lots of great information