Added alternative implementation