cancel
Showing results for 
Search instead for 
Did you mean: 

GER, IT, UK site are broken

SOLVED

GER, IT, UK site are broken

after moving to production mode i have some problem:

1) i have some erors like: 

Widgets.js?nomin:45 Uncaught TypeError: Cannot read property 'Login' of undefined
    at HTMLImageElement.P (Widgets.js?nomin:45)
c9881b77bf0a26c3c42e3dc2550f6100.min.js:120 GET https://babybeddingdesign.r.worldssl.net/pub/static/frontend/Smartwave/porto/en_US/Magento_Cookie/js/require-cookie.min.js net::ERR_ABORTED 403
req.load @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:120
require.load @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:176
load @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:112
load @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:55
fetch @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:55
check @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:56
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:73
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:101
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:73
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:11
each @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:3
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:71
init @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:54
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:97
setTimeout (async)
req.nextTick @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:117
localRequire @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:97
window.require @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:192
init @ VM888:3
(anonymous) @ VM888:8
_.each._.forEach @ VM876:9
(anonymous) @ VM888:7
apply @ VM888:7
fire @ VM870:214
add @ VM870:217
jQuery.fn.ready @ VM870:225
jQuery.fn.init @ VM870:202
jQuery.fn.init @ VM967:29
jQuery @ VM870:18
(anonymous) @ VM890:3
execCb @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:112
check @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:56
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:72
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:11
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:74
each @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:3
emit @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:74
check @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:61
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:72
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:11
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:74
each @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:3
emit @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:74
check @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:61
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:73
init @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:54
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:66
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:11
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:184
execCb @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:112
check @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:56
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:72
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:11
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:74
each @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:3
emit @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:74
check @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:61
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:72
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:11
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:74
each @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:3
emit @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:74
check @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:61
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:73
init @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:54
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:66
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:11
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:184
execCb @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:112
check @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:56
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:72
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:11
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:74
each @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:3
emit @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:74
check @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:61
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:72
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:11
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:74
each @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:3
emit @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:74
check @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:61
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:72
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:11
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:74
each @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:3
emit @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:74
check @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:61
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:73
init @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:54
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:66
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:11
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:184
execCb @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:112
check @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:56
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:72
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:11
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:74
each @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:3
emit @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:74
check @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:61
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:72
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:11
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:74
each @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:3
emit @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:74
check @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:61
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:73
init @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:54
callGetModule @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:74
completeLoad @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:104
require.load @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:176
load @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:112
load @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:55
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:55
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:11
execCb @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:112
check @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:56
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:73
init @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:54
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:97
setTimeout (async)
req.nextTick @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:117
localRequire @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:97
fetch @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:55
check @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:56
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:73
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:101
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:73
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:11
each @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:3
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:71
init @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:54
callGetModule @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:74
completeLoad @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:103
require.load @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:176
load @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:112
load @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:55
fetch @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:55
check @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:56
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:73
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:101
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:73
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:11
each @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:3
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:71
init @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:54
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:97
setTimeout (async)
req.nextTick @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:117
localRequire @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:97
load @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:184
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:71
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:11
on @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:40
callPlugin @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:61
fetch @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:55
check @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:56
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:73
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:101
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:73
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:11
each @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:3
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:71
init @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:54
callGetModule @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:74
completeLoad @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:103
require.load @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:176
load @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:112
load @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:55
fetch @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:55
check @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:56
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:73
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:101
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:73
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:11
each @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:3
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:71
init @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:54
callGetModule @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:74
completeLoad @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:103
require.load @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:176
load @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:112
load @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:55
fetch @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:55
check @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:56
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:73
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:101
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:73
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:11
each @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:3
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:71
init @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:54
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:97
setTimeout (async)
req.nextTick @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:117
localRequire @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:97
load @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:184
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:71
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:11
on @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:40
callPlugin @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:61
fetch @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:55
check @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:56
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:73
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:101
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:73
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:11
each @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:3
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:71
init @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:54
callGetModule @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:74
completeLoad @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:103
require.load @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:176
load @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:112
load @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:55
fetch @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:55
check @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:56
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:73
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:101
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:73
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:11
each @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:3
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:71
init @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:54
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:97
setTimeout (async)
req.nextTick @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:117
localRequire @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:97
load @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:184
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:71
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:11
on @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:40
callPlugin @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:61
fetch @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:55
check @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:56
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:73
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:101
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:73
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:11
each @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:3
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:71
init @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:54
callGetModule @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:74
completeLoad @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:103
require.load @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:176
load @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:112
load @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:55
fetch @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:55
check @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:56
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:73
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:101
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:73
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:11
each @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:3
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:71
init @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:54
callGetModule @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:74
completeLoad @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:103
require.load @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:176
load @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:112
load @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:55
fetch @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:55
check @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:56
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:73
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:101
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:73
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:11
each @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:3
enable @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:71
init @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:54
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:97
setTimeout (async)
req.nextTick @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:117
localRequire @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:97
configure @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:86
requirejs @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:116
req.config @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:117
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:193
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:193
(anonymous) @ c9881b77bf0a26c3c42e3dc2550f6100.min.js:193
VM888:4 Error: Script error for: Magento_Cookie/js/require-cookie
http://requirejs.org/docs/errors.html#scripterror
    at makeError (c9881b77bf0a26c3c42e3dc2550f6100.min.js:16)
    at HTMLScriptElement.onScriptError (c9881b77bf0a26c3c42e3dc2550f6100.min.js:

2) UK, IT, GER site look is broken :

GER.JPG

3) google speed test is giving me only score 3 ! how i can improve it? 

 

 

1 ACCEPTED SOLUTION

Accepted Solutions

Re: GER, IT, UK site are broken

Hello @decornmore

 

Run below command:

 

php bin/magento setup:static-content:deploy en_US it_IT en_GB de_DE
php bin/magento cache:flush
chmod -R 0777 var/ pub/ generated/
Manish Mittal
https://www.manishmittal.com/

View solution in original post

2 REPLIES 2

Re: GER, IT, UK site are broken

Hello @decornmore

 

Run below command:

 

php bin/magento setup:static-content:deploy en_US it_IT en_GB de_DE
php bin/magento cache:flush
chmod -R 0777 var/ pub/ generated/
Manish Mittal
https://www.manishmittal.com/

Re: GER, IT, UK site are broken

Thanks you are the best!