Originally Written by:
	Ondrej Caletka <o.caletka@sh.cvut.cz>
	Richard Golier <rgolier@hotmail.com>

Modernized / Refactored by:
  Stackie Jia <jsq2627@gmail.com>
