going to the right way, using struct