abstract contract