Added initialisation checks and exceptions