split tsoculus.js for better maintainability