add new struct and tool