reorganising abstract component hierarchy