refatored structure