run method is modified to return result object