modify perform method