renamed addListener => sync