figuring out how this works