renamed some things in the example for better understanding