added how it works and why