explain how it works