re-factoring for new components system