added some implementations from 2011