add singleton.js