improve struct