re-factoring structure