first version, copied from reveal.js