adds basic contract model and spec tests