refact structure