I'm writing a Rails service in which a series of operations are performed on a record: class RecordBaseAmountService self.build new end def call(record, subrecord) record = calculate_base_amount(record, subrecord) record = adjust_base_amount(record, subrecord) record = pro_rate_record(record, subrecord) if subrecord.is_prorated? return record end private def calculate_base_amount(record, subrecord) if subrecord.type == 0 base_amount = 10 elsif subrecord.type == 1 base_amount = 20 else base_amount = 30 end record.base_amount = base_amount record.audit_field += "=>base amount calculated" record end def adjust_base_amount(record, subrecord) record.base_amount = record.base_amount*30 record.audit_field += "=>base amount adjusted" record end def pro_rate_record(record, subrecord) record.pro_rated_amount = record.base_amount*subrecord.pro_rate record.base_amount = record.base_amount - record.pro_rated_amount record.audit_field += "=>prorated" record end end I'm highly concerned about thread safety, which I have no experience with. Is this code thread safe? Any comments on any improvements to be made?