changed use of sync directly because it leaks listeners, therefore memory