Added perform()