added a bit of theory :)