framework component