refactored and added new components