ASC2 Optimized version of www.nochump.com/blog/archives/15