Making Classes Provable Through Contracts, Models And Frames