Objected oriented version added