Added alternative implementations