Skeamy,<br><br>Don't give up! Here's what we've done in a similar situation and it has helped a great deal.<br><br>On the client machines we have not two but three tiers:<br><br>UI.exe - The user interface (no business rules here)<br>UI-Centric Business Objects.DLL - all the business rules<br>Proxy.DLL - think of it as a traffic controller for the data<br><br>On the server machine, we have:<br>Data-Centric Business Objects.DLL - running under MTS (not an issue for this discussion). This dll just takes care of retrieving and updating the database.<br><br>Here's how it works:<br><br>When a user starts the application, we retrieve data from the server that we have decided to be "static" data. Say, department master file, warehouse master file , etc. (in your case, this would possibly be validation rules for the different card types). The Proxy component that got the data from the server saves this data in a local database or even a simple text file.<br><br>Later, when the user needs this data, the Proxy DLL simply gets the data from the local files and sends it to the UI-Centric DLL. No more trips across the network.<br><br>We could have eliminated the Proxy tier and did this in the UI-Centric Business Object tier; however, this would break a major rule of n-tier methodolgy that which is the UI-Centric Business Objects should be independent of the data. i.e. the UI-Centric B.O. should not know anything about where the data is coming from or even how it is stored. The Proxy dll (which is very simple to implement) solves that problem.<br><br>The only "real" decisions that you need to make is which data do you consider to be "static enough" to download only once a day and how do you store it locally (Access .MDB, .txt, etc.).<br><br>If this is any help to you and you need more info, please post more questions and I'll do my best to answer.<br><br>Good Luck!