Basically done. But needs further verification