make transition duration and timingFunction user-defined (fixes #1)