write return false if fail