Jump to content
I Forge Iron

Mistakes will happen, here's what happens next


Recommended Posts

One moment you're cruising along working on something, the next you're confronted with a mistake that stops you in your tracks. Either you've made a mistake or you haven't been at this long. Mistakes are going to happen so its a good idea to consider your options for recovery. Very often your reputation in the market is defined by how you recovered from a mistake rather than how you avoided one.

 

Blame game

 

The estimator's job is a collection of extremes. There can be long slow periods, then there can be times where everything comes together so quickly that its a wonder it works at all. As an estimator it's frustrating how much of your time goes into making some basic thing happen while sneaky little issues work their way through your process. Time spent drumming up subcontractor bids won't get spent chasing down some obscure plan note that appeared only once. As disheartening and frustrating as this is, none of the build team can afford to care about that struggle.

 

understand.jpg

 

Due to the incredible clarity provided by competitive bidding, the build team takes over the project with a greatly simplified list of concerns. They need to build the job for the amount that was budgeted and any estimating mistake is going to make that harder. The cost for any given scope of work is very well-defined for them because they're holding competitive bids side by side. If the estimate was done well, the PM will have a pretty easy time identifying the mistake, how much it's worth, and how difficult it'll be to solve. Estimators need to be forthright and honest because credibility is tied to your integrity.

 

What went wrong?

 

Introspection is part of self-improvement but the immediate issue is more pressing. Was the mistake an omission, a math error, a substitution, a transcription error, or a scope confusion?

 

Really often we lull ourselves into thinking that estimating errors are always omissions. "You didn't have enough" of this or that seems like it'd be the lion's share of your errors. In my experience, substitutions and scope confusion are far more likely to bite you than the others. Substitution errors fall into three broad categories.

 

Buried in the specs

 

Specification manuals are thousands of pages long. Design teams often use "canned specs" which cover materials and installations that don't pertain to the project. This reduces the relevant information in the spec book considerably, and serves to "bury" what a bidder really needs to know. Specs are often self referential in the engineering disciplines so it's entirely possible that a given requirement could be influenced by several sections of otherwise unrelated information.

 

Reading and interpreting the meaning often requires specialist knowledge that a GC estimator may not possess. Bidders with limited time may not discover a question with sufficient time to file an RFI. Often they are forced to interpret the specs according to experience, local tradition, and a fair amount of guessing.

 

In these cases, the bidders will add qualifiers or exclusions to their proposals. Thereby protecting their course of action from other interpretations. Generally speaking these proposals are bidding a "complete system" but the materials, methods, and manufacturers may be substitutions for what's in the specifications. When the bidders proposal lacks qualifiers, it's typically because they didn't find the specification conflict.

 

Contradiction

 

There are times where the Construction Documents contradict themselves about project scope or material requirements. Specification manuals (when they exist) tend to have some general requirement for conflicts that obliges bidders to whatever the most costly option is. While it's possible this caveat is employed from time to time, I've never encountered it.

 

Contradictions in the CD's open up ambiguity which savvy bidders use to their advantage. GC estimators must understand that defaulting to the worst-case scenario makes winning a competitive bid very difficult. Without clarifying RFI's to level the playing field, the odds are against bid-day low subs being so conservative.

 

Exploitation

 

Bidders have a keen understanding of what drives their costs. Some material specifications can be so costly that a bidder might be tempted to bid a substitute product. As a GC, it's your responsibility to uphold the standards defined in the construction documents. At a minimum, you should know the cost impact of the substitution. Sadly there are subcontractors who will deceptively word their proposals to appear as though they're bidding per specification.

 

greed.jpg

 

Artistic rendering

 

Really fine print notes, counter-intuitive wording, and nonsensical qualifiers tend to accompany this practice. These bidders are the embodiment of "the devil's in the details". Any time you have an outlier low bid, you MUST compare the exclusions, inclusions, and clarifications looking for this stuff. If you're contracting a lot of work with a subcontractor, use that relationship to demand less obtuse proposals. A trusted sub should have trustworthy proposals.

 

Scope confusion can driven by perspective

 

Some projects involve alternates or pricing break-outs which are driven by client concerns which are not fully articulated in the plans. For example, a tenant might be remodeling their office within a landlords building. Portions of the work may be attributable to one or both parties depending on lease provisions. Not only might the work be funded from separate sources, the work may actually occur at different times to suit the parties involved. To the client and perhaps their design team, all of this is clear. However the design team may request this pricing in opaque and misleading ways. "Landlord portion" is a meaningless term if the plans do not actually indicates specific areas or tasks to be done. Design teams rarely comment about work sequencing requirements inherent to these alternates. Anything that's confusing or misleading to the GC will be even more so to the bidders. Notes like "building standard", "commercial grade", "field verify", or "match existing" are poor substitutes for real specifications. Again, the owners intentions are typically clear to the PM who's taken over the project. You can expect little sympathy for how difficult it was to understand the client's intention at bid time.

 

Mechanical errors

 

Math, communication, and transcription errors are very frustrating. Spreadsheets and computer programs built to automate aspects of estimating can fail in some unexpected ways. In my experience, math errors tend to coalesce around multiples more than anything else. By that I mean a tally which is driven by several functions which are then multiplied. Most spreadsheets and programs which multiply an assembly conceal the multiplier from the estimators reports. It's only when you've actually edited the formula in a cell or in a drop-down menu that you can actually see what the multiplier is. Order of operations can have profound results on complex formulas. It's much harder to sort out when something is wrong when the driving data is concealed from your view.

 

Software systems which import and export into one another are touted as time savers and error-free. The first time the user does something the programmer didn't account for, those promises are broken. Some systems allow for a user to generate their own new "part" or "assembly" which they can then use to count and price. In the case of a Quantity Take Off (QTO) program exporting to a pricing program, it's critical to understand that the programs communicate via a shared list of variables. Introducing a user-created part in one program may leave the other program unable to interpret what is being communicated. When everything is automated, it's important to know where unexpected things end up. More than one program I've used did not provide any notification when it encountered unexpected information. Without knowing where to check, it would have been difficult to know that items were being excluded. If the only "solution" is to painstakingly check every single data point, the program is creating more work than it's doing.

 

Bid blind

 

Transcription errors include mistyping numeric amounts or selecting the wrong variable. It's very easy to "go blind" to mistakes when you've reviewed a spreadsheet over and over again. Simply scanning for errors isn't likely to catch these issues. Re-bidding the same job over and over can cause "bid blindness" as well. Be especially cautious with these jobs and clients. Ask for help when you need it. A new set of eyes can work wonders. Be careful about who you ask, since office politics can whip up a whirlwind of controversy over the most innocuous things.

 

Spreadsheet crash

 

Errors, corrupted files, and macro warnings are just some of the ways that a spreadsheet can break down. Best practices include maintaining two sets of saved files for every "live" estimate. Depending on your system and your companies information-management rules, it may be necessary to copy the job and export it to a unique backup location.

Lots of firms use an old estimate as their template for future work. It's been my experience that blank templates are more reliable and less prone to carrying glitches forward. If you're using a spreadsheet program for your estimate, I encourage you to include calculation checks that ensure your tallies are correct. Often it's possible to place these calculating cells outside of the "printed area" so they don't show up on printouts that everyone else sees.

 

Copy and paste save's a lot of time however a great deal of file corruption stems from copying data from outside the file. Again, trying to copy an old estimate into the new one is where old mistakes become new ones. Programs and operating systems are continuously updating which can generate unexpected problems with old data.

 

Spreadsheets can go seriously sideways from seemingly innocuous formatting changes. Adding a line or deleting a column can have dire consequences. I generally advocate a dedicated page in the workbook for named cells, tables, and so forth which allows the main sheets to use "global" terms without risk of losing them because somebody wanted to change the page layout via deleting lines. Be very careful about having a "team" working on the same file. Without a thorough understanding of how the spreadsheet is set up, it's just asking for trouble.  Rickety, complicated, and overwrought spreadsheet formatting needs to go.  Uniform notation, and reliable performance are critical for success. Antiquated programs and technology may "get along fine" for a while but eventually you'll be stuck if you don't get contemporary systems set up.  It's pitiful how many estimators are working on ancient computers just wheezing along.

 

Course correction

 

Having covered most of the errors an estimator can make, we'll move on to fixing what we can. Depending on the company, it's culture, and the PM's time frame, it may be possible to re-engage with the bid and help get things on track. Own the mistake and get really solid about what happened. There's a lot of stress on you and people are looking for answers. Give yourself time to REALLY know what you're talking about BEFORE you start answering everyone. Making a mistake worse by speaking hastily is common. Problems should be approached with humility and resolve.

 

isnicevillage.jpg

 

Hiding out with a false identity should be your last resort

 

Ask for help

 

I have found that honesty is the single most effective and least employed way to fix a mistake. A lot of people are afraid to admit they made a mistake for fear of it being used against them. If you need help, you're not in a position to distrust. It should be obvious that the less often you need help, the more likely you are to get it. Speaking from both sides of these situations, I can say that professionals help each other out. It is very rare that the help will completely solve the problem, but it's generally enough to make a difference. Remember that your time to help someone will come.  Careers are long and the bid market is small, you'll cross paths with these people again.

 

Dig in and find solutions

 

One way to ethically reduce your exposure on an error is to investigate different ways of splitting the scope. A residential type window might be installed by a Carpenter, a Roofer, a Siding firm, a Glazier, or a Laborer depending on what you're dealing with. Furnishing parts may not be a subcontractor's profit center so purchasing material directly may also offer a means to gain some ground. Ask for suggestions and don't be afraid to run down some solutions. Taking on the headache of figuring something out increases the odds that a bidder will work with you. More than one estimator discovered a cheaper way to bid work after solving such a mistake!

 

You are not a victim

 

If a bidder's shady proposal got you in this bind, be cautious, circumspect, and clear with everyone involved. I once had a last-minute phone call with a bidder regarding a very costly scope item. The bidder told me everything was included and promised to send a revised proposal with better written inclusions the next morning. I noted his comments on the proposal, returned to my bid, and spent the next few days taking care of responsibilities. A few weeks later our PM was buying out the project and found my hand-written notes on the bidders proposal. When we followed up with the bidder to get the promised proposal, the company informed us that the bidder had been let go. When they checked the bid, they reported that the scope items in question were not included in their proposal! Lacking proof beyond my notes of the conversation, we had nothing to counter their additional costs to include the full scope.

 

I didn't get written proof of the scope inclusion from the bidder. That was my fault. I had worked with this bidder for years and felt I could trust what I was told. In point of fact, the company likely terminated this person because it became too costly to pay for promised work that wasn't actually in the bids.

 

Maintain composure

 

Yelling, stomping my feet, and threatening to cut that company off my bid list's would not have accomplished anything beyond making myself a laughingstock. My frustration with the situation was tough to swallow because everything was reduced to "you missed this costly thing". Nobody cared that I had painstakingly accounted for that item, or that I'd sent a dozen or more emails reminding bidders to include it. All that mattered to my co-workers was that my bid didn't pay for it. Despite all the animosity I felt, the fact remains that any arbiter would rightfully ask why I hadn't gotten this costly issue in writing. My only honest answer; I screwed up.

 

Watching from the sidelines

 

Some firms maintain strict separation between estimating and construction departments. It can batter your ego severely to watch a PM struggling to overcome your mistake.

 

gomode.jpg

 

"Of course there's always option B if you're in a hurry..."

 

Maintain perspective, estimating is about reducing risk and tackling uncertainty. It's an estimate, not a quote and the terms are different for a reason. A substantial enough error in your bid may actually be grounds to seek contractual relief through litigation. It's not that easy to put the company out of business with a single bid. An estimating mistake is in the spotlight which makes it appear huge and insurmountable. PM's who have to overcome budget problems in addition to everything else, have a great deal to complain about. PM's who pull of heroic efforts like this deserve your respect.

 

The Carpet calling

 

Oh boy, getting called to the bosses office to explain what went wrong will make a body want to stay in bed. Every boss is different and some are more understanding than others. The facts are unwavering and I encourage you to stick to them as they will support your successes the same as your shortcomings. "Throwing someone under the bus" is blaming or passing responsibility on to others. Whatever short-term gains come of the practice are paid dearly out of your reputation. Most bosses want to know what was done wrong, why it was done wrong, and why it won't happen again. Weak answers to any of the three puts blood in the water for a feeding frenzy. Getting out in front of this moment requires taking responsibility for your part right away. Random stuff happens but bosses don't want to hear that. They also don't want to hear that estimates involve risk. What they want to know is that you well and truly understand that failing to protect them from those risks has consequences. Being honest and forthright goes a long way towards assuaging their anxieties.

 

The solution to a symptom is the source of another problem.

 

I've had bosses who wanted a literal catalog of all past mistakes made to be used as a checklist on all out-going work. This "one size fits all" approach to problem solving doesn't help most of the time. The reason you made the mistake is MUCH more important to correcting it than anything else. I had an old spreadsheet that had some calculations for permit fees that were not correct on a few bids. Since permitting costs were done by either formula or rubric depending on the municipality, it was difficult to know how the final math was going to come together. I found that if I zeroed out the formula in my estimating template, I would be able to see it needed fixing before it went out. The reason I wasn't getting it right was because my template had the correct formula for one city in that cell. I saw a dollar amount in the cell, it looked about right, and it was easy to forget to check the intricacies of the formula. A checklist telling me not to screw up the calculations was treating the symptom, not the cause. Any checklist item that involves a lot of investigation, isn't likely to get done during a quick final pass because there's never going to be time. It's therefore critical to solve the problem before it can get that far in the future.

 

Problem prevention

 

Checklists can absolutely help ensure that you're not repeating mistakes. They key to an effective checklist is to list items that are quickly and competently reviewed. Any task that involves a "stop everything and search" approach is an indicator that you need a process milestone instead. A process milestone is where you've arbitrarily decided that some part of the bid process has concluded and you're not going back into it again. For example, Quantity Take Offs (QTO's) is a separate operation from entering the data into your estimate. The QTO's completion is a process milestone. It makes sense to check your work on the QTO at this time to avoid carrying mistakes into the data entry phase.

 

For estimators using QTO programs, it's beneficial to stop and check that everything's correct before importing/exporting the takeoffs into the pricing system. Edits can be slow and error prone so it's best to avoid it whenever you can. Most "merged" programs work exceptionally well in one direction, for the first time only. Changes after that point are rarely as smooth.

 

giddyup.jpg

 

"Sure they're fast on the straightaways.  It's just...well, the bears are eating the horses, there I said it!"

 

Process milestones offer "known good" points to refer back to when you're trouble-shooting an estimate. Save your milestones in isolated files so you can revert to earlier versions without losing all your work. Make sure you save more often towards the later stages because time lost is more detrimental to your success.

 

One pass is better

 

In earlier posts I've commented about my "one pass" take off method. I advocate measuring everything for the QTO on the sheet BEFORE moving on to the next sheet. There will always be some flipping back and forth to pull out needed information. The primary reason I measure everything on a sheet is because "gotcha" requirements show up very rarely on the plans. If your goal is to cover the entire sheet, your observation of that sheet is less selective. For example, window takeoffs might have you looking at the elevations, floor plans, interior design plans, and roof plans. If you went zooming through the sheets just looking for window's to take off, it's unlikely that you'd record a solitary note making an obscure reference to an item not related to windows. Fifty passes later, that note still doesn't have a "home" in your QTO because it doesn't pertain to any of the obvious take off divisions. When it gets missed and you're hearing about it later, you'll sadly recall seeing that note.

 

Booby trapped plans

 

Really unique, expensive, and incredibly hard-to-get items that are dear to the Architects heart are often noted just once in the plans.

 

shitty-art.jpg

 

You might say it's their signature touch

 

As an estimator, you must understand that technicalities are traps. The sooner these traps are fully addressed, the less risk you'll face from them.

 

Unless you had a spectacularly bad day, it's unlikely that you'll ever "miss" all the flooring in a project. Categorizing super-obvious elements of the project shouldn't deprive you of time to fully "disarm the traps". Tons of estimates have carpet takeoffs accurate to the square inch but ran out of time to chase down some weird requirement so they "just threw some money at it" hoping it wasn't a big deal. If throwing money at risk was a successful practice, estimators wouldn't be necessary.

 

I can't sleep because I might forget, because I'm always tired, because I can't sleep..

 

Lots of estimators struggle to fall asleep after that kind of mistake because they're remembering all the stuff they haven't yet recorded. The "one pass" QTO may be cumbersome to track all the different scope items shown on a page, but it benefits from not requiring you to remember to record everything you've seen. Before moving on, it would be good to mention that QTOs benefit from defined "stopping points". Allowing yourself to be interrupted mid-measurement or mid-recording is a bad practice. Working an extra hour to be done with a sheet is better than laying awake worrying about where you left off. Conversely, it's often better to defer a long task when you're certain of being interrupted. Despite the current popularity of "open door policy" office environments, it's very likely that you'll occasionally need privacy to get your job done.

 

Layer cake

 

Be advised that lots of QTO software systems utilize symbols, lines, poches (graphic patterns), and colors to signal when something has been measured. Unless you've properly structured your use of the system, it's possible to block your view of un-quantified items. For example a wall takeoff may look like a line. Doorways within a wall may be indicated with an icon. Glazing in a door transom may also be indicated with an icon. Looking at a plan view, the transom glazing occupies the same location as the door frame. A "zoomed out" view of the entire assembly will all but certainly obscure your ability to see that anything is amiss. Some programs allow for "layers" or selective display of takeoffs. It's imperative to utilize these features to allow a page overview of a given takeoff that's not cluttered with other items. If you're using pencil and paper to do your measurements; be very tidy with your coloring and note the items judiciously to avoid future confusion.

 

Bread crumb trail            

 

Items derived from several calculations can be particularly difficult to troubleshoot. Concrete volume calculations for items like piers, foundations, and stem walls will require interpolation of several data points. It's very tempting to push all the variables into a single formula to make a cell report whatever you're looking for. This nests the variables within a formula which isn't visible via a quick scan of the spreadsheet.

 

If for example you've got a foundation with a schedule of pier types, it behooves you to manually calculate the volume, surface area, and rebar weight of each type. Now you can define the formwork area, concrete volume, and rebar costs. Making a note of these data points either on the plans or in a notebook gives a reference which you can later use for error scanning. It's a simple task to take the pier count and manually calculate whatever you need with these figures handy.

 

However you choose to record this information, maintain the same layout, order, and arrangement. Sloppy notation, and inconsistent layouts will make it slow to read when you are in a serious hurry. Many rookie estimators suffer from "it's in here somewhere" note taking. They spend as long looking for their note as they'd need to recalculate the needed figure. Put the plan page number next to the notes so you can tell someone where to look.

 

IN the plans but not ON the plans: Handy information nobody will provide.

 

Stem walls should be categorized by height and calculated by the running foot. Structural drawings virtually never indicate the actual stem wall heights where they'd be most helpful. WRITE THE WALL HEIGHTS on the plans next to the walls you're taking off. It's difficult to see what's wrong with a takeoff when you've got to flip back and forth between foundation, floor, and roof plans doing several calculations to answer such a simple question. Before moving on from this, a warning. You absolutely cannot trust that architectural elevations or section drawings are drawn to proper scale for foundation walls. Most of these drawings will include a note telling you not to scale the drawings. Nobody trusts themselves to provide an accurate drawing based on their own calculations so they make it your responsibility.

 

sobbing.jpg

 

DO NOT TAKE IT LIGHTLY. Buildings placed on sloping grade or "stepped into" a hillside are particularly likely to require complex calculations for information that no design team will (directly) provide.

 

Despite incredible advancements in CAD, the inertia of CYA practices continue to deprive estimators of obviously necessary information. Simple questions such as whether a site will require imported or exported fill requires substantial work on your part because the engineer is avoiding liability. What you need is technically in the plans, but it's sure not on the plans. In practice, this generates errors that you'll see on bid day. Knowing what's right and why before you're out of time is how you avoid picking the wrong sub. You cannot assume that there will be a bidder consensus. I've encountered projects with four bidders and four different views of what was supposed to happen! As an estimator, it'll be seen as your fault if you get it wrong because...

 

Complex problems seem easier AFTER the solution is provided.

 

If it's tough for you to derive the answer, it'll be hard for your subs as well. Giving yourself plans that are notated with the obviously necessary information is a huge asset. In some cases, it may be worth your time to draw the needed view of what you're bidding with the relevant dimensions to gain clarity on what the project requires. Transmitting these rough sketches to subcontractors can go a long way towards ensuring that you're getting correct bids. More than once I've sent such a plan with an RFI asking "Is the attached sketch correct?" to the design team. They can respond "yes" and instantly resolve a complex issue on the record for all bidders.

 

squirrel-dance.jpg

 

Interpretive dance is easily the worst way to answer a complex question. Don't let it happen to you!

 

Don't expect much kudos for resolving some complicated pre-bid issue with the plans. Mistakes in the plans will be treated like they were symptoms of the "work in progress" that has little bearing on the bid process. However any tenuous thread to support their actual intentions will be presented as conclusive evidence that bidders knew what they meant all along. For example, I encountered an engineer who claimed a requirement for bidders to attend a pre-bid site walk was grounds to expect the subcontractors to be responsible for work that their own specifications explicitly defined as not in contract.

 

Going to bat

 

Sometimes estimating comes down to judgment calls which bring the risk of conflict with the client and their design team. Whenever possible it behooves the estimator to consult with the PM, and/or company ownership about this plan of action. As an estimator it's often easy to get fixated on seeing an opportunity within the conflict whereas the build team tends to focus on the risk of coming up short. If the decision is made to risk the conflict, it's the estimators responsibility to have their facts straight.

 

iamthenight.jpg

 

Fact #1: This is not a bat

 

Complex and contradictory requirements need to be distilled into a concise and reasonable argument. Understand that design teams may trump estimators with technicalities, but owners expect GC's to solve problems and to "be reasonable". A very common counterargument to GC claims that a design isn't feasible is "well that's just means and methods".   Incomplete, inaccurate, and delayed answers to your questions only make it harder. Well written RFI's submitted in a timely manner prove due diligence. Including "reasonable" budgetary amounts to protect the owner from extensive change order costs go a long way towards winning that argument. If your PM will need to go to bat, make sure you give them something heavy to swing. Losing that struggle will still be remembered as "your fault"!

 

Moving on

 

I once had a boss who would take the financial impact of any given mistake then work out the most discouraging statistic. For example, on a small job you might have two doors. Let's say you missed that the doors required four hinges instead of the three that your door guy bid. The cost of a couple of hinges relative to the whole project was infinitesimal. But I'd hear about how I'd missed 25% of the hinges! On creative occasions I'd hear how we needed 133% more hinges than I'd bid!

I've also encountered estimators who would shrug off HUGE mistakes by arguing that the difference between their bid and 2nd low was less than the value of their mistake. Somehow these estimators believe failure with consensus is an improvement.  It doesn't matter that everyone made the same mistake when you're the one who pays for it!

 

My point is that a balance must be struck between how relevant a mistake really is. Estimating is a punishing career choice for an optimistic perfectionist because risk is always present and life isn't fair. Minimizing risk to increase profitability is the name of the game. Some projects are won through a mistake but the PM's recover and make the job profitable. Estimating means that there's always some uncertainty which means that PM's will often have something to work out on their own.  Many industry relationships are built when a firm shows what their make of by recovering from a mistake.

 

Don't fall into the trap of thinking that every PM complaint is valid criticism, or that every mistake is fatal. Estimating is a difficult craft that garners little respect from folks who've never won a truly difficult bid. Keep your head up and your eyes open. Look at these struggles as inevitable and realize that it's your purpose to solve them as they arise. It's far more satisfying to know why you won a job, than it is to simply account it to chance. Wisdom is knowledge gained through experience. Admitting mistakes accepts that experience. Learn from every mistake you see and you'll soon spot opportunity that others miss.

 

peaceful-moment.jpg?w=576

 

What you do with that opportunity is your business!

Link to comment
Share on other sites

Yup, You hit the nail right on the head .......   The sad thing is a lot of the time I am the poor slob that has to make estimating errors work in the field ...well written and I am going to pass this along to one of our young estimators.

Link to comment
Share on other sites

  • 3 months later...

rockstar keep'em coming always love how you can put some diffecult things into such sense making simple to understand ways.  and you add pictures to boot!!!  a lot of your insite i use with my sales team and bidders.  it really helps me as adivision manager to pass on some practical knowlege.  i hope you don't mind me using your thoughts and example.  i always give you credit!! 

Link to comment
Share on other sites

matto,  I'm glad to hear I'm helping.  I started my blog: estimatorsplaybook.com because I encountered people making mistakes almost daily.  By providing the instruction for free I thought I might gradually help those looking for answers and generally make thing better.  So please share my work freely.  That's exactly what I'm hoping for.  If you want to direct people to my blog, they can leave comments, or email me with questions.  I just hit my first anniversary of doing this, I've written thirty three posts to date.  I'm glad the photo's are well received as I really enjoy adding a bit of humor with them.

 

Charles, thank you again.

 

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...