I may or may not have stolen this idea from @rxi