refactored components into more flexible entity parts