implemented firt version