structure changed to separate component files