start implementing contracts