random -> perform logic revised