structure change, easier to understand code