Pattern: decorator  http://amdy.su/pattern-decorator/