added options and callback, need to synchronize with content script