Initial working version, with full coverage