This isn't software. I needed to develop a mechanism to handle playing cards in an accurate and detailed way. After some testing of the minimum implementation, it became clear that the mechanism I had imagined was fundamentally too unreliable for use, so (using the lessons learned from the exploration) I developed a mechanism based on an entirely different principle.