This document discusses Madeo, a CAD tool for programming reconfigurable hardware using an object-oriented methodology. Madeo was developed over 10 years and allows describing circuits as objects in a high-level language. It supports various reconfigurable architectures by modeling them and can generate configuration bitstreams. The tool aims to improve on existing solutions by providing retargetability, exploiting flexibility of reconfigurable hardware, and applying principles like code reuse and portability through a virtual machine-like approach. The document outlines key aspects of Madeo like its architecture modeling, compilation flow, and results demonstrating its capabilities on different targets. It also discusses lessons learned like using meta-modeling for evolution and interchange support.