Gererate requires and provides