refact
update structure