basic structure of GA