added optional JavaScript library