Freelancer:
asidhm
Revised 5
Updated as per the feedback.