TODO:

To do this stuff, I will be probably forced to learn JavaScript. If so, I will try to keep its use minimal, and use it only when it's necessary.