added other implementations I could find