use defonce for better interop with lighttable