Inspired by Vectortuts+ tutorial.