Plugin contracts (stage 1)

Still missing some stuff