tried to make it a little more readable