refact struct