New version with interface