for understand how all this works