COOL: an Object System with Constraints