SlideShare a Scribd company logo
1 of 16
When CSS !important
BY: AAMIR SHAHZAD
FRONT END DEVELOPER
HTTP://AAMIRSHAHZAD.NET
7/26/2015 AAMIR SHAHZAD - HTTP://AAMIRSHAHZAD.NET
Contents
 History
 Syntax
 What CSS !important does?
 When to use !important
 Cons of !important
 Fun facts about !important
7/26/2015 AAMIR SHAHZAD - HTTP://AAMIRSHAHZAD.NET
History
CSS !important was added in CSS 2.1 (no changes to it in CSS3)
7/26/2015 AAMIR SHAHZAD - HTTP://AAMIRSHAHZAD.NET
Syntax
7/26/2015 AAMIR SHAHZAD - HTTP://AAMIRSHAHZAD.NET
What CSS !important does?
An !important declaration provides a way for a web designer or developer to give a CSS value
more weight than it naturally has.
7/26/2015 AAMIR SHAHZAD - HTTP://AAMIRSHAHZAD.NET
Sometimes…
WHY CSS NOT WORKING?
Use !important rule (whisper)
OK, now it's working
7/26/2015 AAMIR SHAHZAD - HTTP://AAMIRSHAHZAD.NET
When to use !important…
Never!!!
7/26/2015 AAMIR SHAHZAD - HTTP://AAMIRSHAHZAD.NET
However…
When using external CSS from CDN you can’t change
When using a plugin having CSS you can’t change; like bootstrap CSS
When requirement is a property not to over-ride even by JavaScript
When too much effort is required if you want to avoid it and adding it doesn’t effect much
7/26/2015 AAMIR SHAHZAD - HTTP://AAMIRSHAHZAD.NET
Still these can be solved!
When using external CSS from CDN you can’t change
When using a plugin having CSS you can’t change; like bootstrap CSS
Adding CSS from CDN or plugin before your normal CSS file, will allow you to not use !important
except any property having !important in that CSS.
7/26/2015 AAMIR SHAHZAD - HTTP://AAMIRSHAHZAD.NET
Cons
Code will not be maintainable
If you have added !important with some generic CSS properties you have to override each time
if you want something different + this class. So never use !important with generic class.
7/26/2015 AAMIR SHAHZAD - HTTP://AAMIRSHAHZAD.NET
Cons
!important disrupts the natural flow
Naturally style of second class should apply. But as first class using !important therefore, this will
be overridden by first class. Use different classes to avoid this problem.
7/26/2015 AAMIR SHAHZAD - HTTP://AAMIRSHAHZAD.NET
Cons
He/she has to debug and find why his/her applied style is not applying. They have run through
code where and why !important is used. To apply their style every time they have to use
!important with CSS property value otherwise style will not apply.
Painful for other developers
7/26/2015 AAMIR SHAHZAD - HTTP://AAMIRSHAHZAD.NET
Cons
One !important means there will be others
Yes this very right once you have started using !important specially with some generic class or
element each time in order to apply new style on an element you have to add !important. Which
a bad practice.
7/26/2015 AAMIR SHAHZAD - HTTP://AAMIRSHAHZAD.NET
Fun facts
In IE6 and IE7, if you use a different word in place of !important (like !somedog), the CSS rule will
still be given extra weight, while other browsers will ignore it
If for some particular reason you have to write the same property twice in the same declaration
block, then add !important to the end of the first one, the first one will have more weight in
every browser except IE6 (this works as an IE6-only hack, but doesn’t invalidate your CSS)
7/26/2015 AAMIR SHAHZAD - HTTP://AAMIRSHAHZAD.NET
Common symptoms
1. Fatigue
2. Tension
3. Revenge
7/26/2015 AAMIR SHAHZAD - HTTP://AAMIRSHAHZAD.NET
Any Questions or Suggestions ???
7/26/2015 AAMIR SHAHZAD - HTTP://AAMIRSHAHZAD.NET

More Related Content

Similar to When css !important is the right choice?

The New Renaissance of JavaScript
The New Renaissance of JavaScriptThe New Renaissance of JavaScript
The New Renaissance of JavaScriptHamlet Batista
 
MySQL 8.0 Document Store - how to mix NoSQL & SQL in MySQL 8.0
MySQL 8.0 Document Store - how to mix NoSQL & SQL in MySQL 8.0MySQL 8.0 Document Store - how to mix NoSQL & SQL in MySQL 8.0
MySQL 8.0 Document Store - how to mix NoSQL & SQL in MySQL 8.0Frederic Descamps
 
Front End Development for Back End Developers - vJUG24 2017
Front End Development for Back End Developers - vJUG24 2017Front End Development for Back End Developers - vJUG24 2017
Front End Development for Back End Developers - vJUG24 2017Matt Raible
 
ZURB Foundation 5: Clean + Organized
ZURB Foundation 5: Clean + OrganizedZURB Foundation 5: Clean + Organized
ZURB Foundation 5: Clean + OrganizedJames Stone
 
Frontend Performance: Illusions & browser rendering
Frontend Performance: Illusions & browser renderingFrontend Performance: Illusions & browser rendering
Frontend Performance: Illusions & browser renderingManuel Garcia
 
Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017Matt Raible
 
WordPress Meetup - Top 9 September 2015
WordPress Meetup - Top 9 September 2015WordPress Meetup - Top 9 September 2015
WordPress Meetup - Top 9 September 2015David Bisset
 
Even faster web sites presentation 3
Even faster web sites presentation 3Even faster web sites presentation 3
Even faster web sites presentation 3Felipe Lavín
 
Tailwind CSS - KanpurJS
Tailwind CSS - KanpurJSTailwind CSS - KanpurJS
Tailwind CSS - KanpurJSNaveen Kharwar
 
Android app development Hybrid approach for beginners
Android app development  Hybrid approach for beginnersAndroid app development  Hybrid approach for beginners
Android app development Hybrid approach for beginnersKhirulnizam Abd Rahman
 
Modern Front-End Development
Modern Front-End DevelopmentModern Front-End Development
Modern Front-End Developmentmwrather
 
Efficient, maintainable CSS
Efficient, maintainable CSSEfficient, maintainable CSS
Efficient, maintainable CSSRuss Weakley
 
Solving Complex JavaScript Issues and Leveraging Semantic HTML5
Solving Complex JavaScript Issues and Leveraging Semantic HTML5Solving Complex JavaScript Issues and Leveraging Semantic HTML5
Solving Complex JavaScript Issues and Leveraging Semantic HTML5Hamlet Batista
 
Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Fisl 11 - Dicas de Desenvolvimento Web com RubyFisl 11 - Dicas de Desenvolvimento Web com Ruby
Fisl 11 - Dicas de Desenvolvimento Web com RubyFabio Akita
 
Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Consegi 2010 - Dicas de Desenvolvimento Web com RubyConsegi 2010 - Dicas de Desenvolvimento Web com Ruby
Consegi 2010 - Dicas de Desenvolvimento Web com RubyFabio Akita
 
Front End Development for Backend Developers - GIDS 2019
Front End Development for Backend Developers - GIDS 2019Front End Development for Backend Developers - GIDS 2019
Front End Development for Backend Developers - GIDS 2019Matt Raible
 

Similar to When css !important is the right choice? (20)

The New Renaissance of JavaScript
The New Renaissance of JavaScriptThe New Renaissance of JavaScript
The New Renaissance of JavaScript
 
Test-proof CSS
Test-proof CSSTest-proof CSS
Test-proof CSS
 
MySQL 8.0 Document Store - how to mix NoSQL & SQL in MySQL 8.0
MySQL 8.0 Document Store - how to mix NoSQL & SQL in MySQL 8.0MySQL 8.0 Document Store - how to mix NoSQL & SQL in MySQL 8.0
MySQL 8.0 Document Store - how to mix NoSQL & SQL in MySQL 8.0
 
Front End Development for Back End Developers - vJUG24 2017
Front End Development for Back End Developers - vJUG24 2017Front End Development for Back End Developers - vJUG24 2017
Front End Development for Back End Developers - vJUG24 2017
 
ZURB Foundation 5: Clean + Organized
ZURB Foundation 5: Clean + OrganizedZURB Foundation 5: Clean + Organized
ZURB Foundation 5: Clean + Organized
 
Css · bootstrap
Css · bootstrapCss · bootstrap
Css · bootstrap
 
Frontend Performance: Illusions & browser rendering
Frontend Performance: Illusions & browser renderingFrontend Performance: Illusions & browser rendering
Frontend Performance: Illusions & browser rendering
 
Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017
 
WordPress Meetup - Top 9 September 2015
WordPress Meetup - Top 9 September 2015WordPress Meetup - Top 9 September 2015
WordPress Meetup - Top 9 September 2015
 
Even faster web sites presentation 3
Even faster web sites presentation 3Even faster web sites presentation 3
Even faster web sites presentation 3
 
Tailwind CSS - KanpurJS
Tailwind CSS - KanpurJSTailwind CSS - KanpurJS
Tailwind CSS - KanpurJS
 
CSS Best practice
CSS Best practiceCSS Best practice
CSS Best practice
 
Android app development Hybrid approach for beginners
Android app development  Hybrid approach for beginnersAndroid app development  Hybrid approach for beginners
Android app development Hybrid approach for beginners
 
Let There Be Peace On CSS
Let There Be Peace On CSSLet There Be Peace On CSS
Let There Be Peace On CSS
 
Modern Front-End Development
Modern Front-End DevelopmentModern Front-End Development
Modern Front-End Development
 
Efficient, maintainable CSS
Efficient, maintainable CSSEfficient, maintainable CSS
Efficient, maintainable CSS
 
Solving Complex JavaScript Issues and Leveraging Semantic HTML5
Solving Complex JavaScript Issues and Leveraging Semantic HTML5Solving Complex JavaScript Issues and Leveraging Semantic HTML5
Solving Complex JavaScript Issues and Leveraging Semantic HTML5
 
Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Fisl 11 - Dicas de Desenvolvimento Web com RubyFisl 11 - Dicas de Desenvolvimento Web com Ruby
Fisl 11 - Dicas de Desenvolvimento Web com Ruby
 
Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Consegi 2010 - Dicas de Desenvolvimento Web com RubyConsegi 2010 - Dicas de Desenvolvimento Web com Ruby
Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
 
Front End Development for Backend Developers - GIDS 2019
Front End Development for Backend Developers - GIDS 2019Front End Development for Backend Developers - GIDS 2019
Front End Development for Backend Developers - GIDS 2019
 

Recently uploaded

Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 

Recently uploaded (20)

Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 

When css !important is the right choice?

  • 1. When CSS !important BY: AAMIR SHAHZAD FRONT END DEVELOPER HTTP://AAMIRSHAHZAD.NET 7/26/2015 AAMIR SHAHZAD - HTTP://AAMIRSHAHZAD.NET
  • 2. Contents  History  Syntax  What CSS !important does?  When to use !important  Cons of !important  Fun facts about !important 7/26/2015 AAMIR SHAHZAD - HTTP://AAMIRSHAHZAD.NET
  • 3. History CSS !important was added in CSS 2.1 (no changes to it in CSS3) 7/26/2015 AAMIR SHAHZAD - HTTP://AAMIRSHAHZAD.NET
  • 4. Syntax 7/26/2015 AAMIR SHAHZAD - HTTP://AAMIRSHAHZAD.NET
  • 5. What CSS !important does? An !important declaration provides a way for a web designer or developer to give a CSS value more weight than it naturally has. 7/26/2015 AAMIR SHAHZAD - HTTP://AAMIRSHAHZAD.NET
  • 6. Sometimes… WHY CSS NOT WORKING? Use !important rule (whisper) OK, now it's working 7/26/2015 AAMIR SHAHZAD - HTTP://AAMIRSHAHZAD.NET
  • 7. When to use !important… Never!!! 7/26/2015 AAMIR SHAHZAD - HTTP://AAMIRSHAHZAD.NET
  • 8. However… When using external CSS from CDN you can’t change When using a plugin having CSS you can’t change; like bootstrap CSS When requirement is a property not to over-ride even by JavaScript When too much effort is required if you want to avoid it and adding it doesn’t effect much 7/26/2015 AAMIR SHAHZAD - HTTP://AAMIRSHAHZAD.NET
  • 9. Still these can be solved! When using external CSS from CDN you can’t change When using a plugin having CSS you can’t change; like bootstrap CSS Adding CSS from CDN or plugin before your normal CSS file, will allow you to not use !important except any property having !important in that CSS. 7/26/2015 AAMIR SHAHZAD - HTTP://AAMIRSHAHZAD.NET
  • 10. Cons Code will not be maintainable If you have added !important with some generic CSS properties you have to override each time if you want something different + this class. So never use !important with generic class. 7/26/2015 AAMIR SHAHZAD - HTTP://AAMIRSHAHZAD.NET
  • 11. Cons !important disrupts the natural flow Naturally style of second class should apply. But as first class using !important therefore, this will be overridden by first class. Use different classes to avoid this problem. 7/26/2015 AAMIR SHAHZAD - HTTP://AAMIRSHAHZAD.NET
  • 12. Cons He/she has to debug and find why his/her applied style is not applying. They have run through code where and why !important is used. To apply their style every time they have to use !important with CSS property value otherwise style will not apply. Painful for other developers 7/26/2015 AAMIR SHAHZAD - HTTP://AAMIRSHAHZAD.NET
  • 13. Cons One !important means there will be others Yes this very right once you have started using !important specially with some generic class or element each time in order to apply new style on an element you have to add !important. Which a bad practice. 7/26/2015 AAMIR SHAHZAD - HTTP://AAMIRSHAHZAD.NET
  • 14. Fun facts In IE6 and IE7, if you use a different word in place of !important (like !somedog), the CSS rule will still be given extra weight, while other browsers will ignore it If for some particular reason you have to write the same property twice in the same declaration block, then add !important to the end of the first one, the first one will have more weight in every browser except IE6 (this works as an IE6-only hack, but doesn’t invalidate your CSS) 7/26/2015 AAMIR SHAHZAD - HTTP://AAMIRSHAHZAD.NET
  • 15. Common symptoms 1. Fatigue 2. Tension 3. Revenge 7/26/2015 AAMIR SHAHZAD - HTTP://AAMIRSHAHZAD.NET
  • 16. Any Questions or Suggestions ??? 7/26/2015 AAMIR SHAHZAD - HTTP://AAMIRSHAHZAD.NET