we should try to target specifications if they exist, but the specifications should be moulded by the implementations. if the major implementations change, so too should the specifications.