re-structure components